Simulasi & Permodelan

Membangkitkan Bilangan Acak Menggunakan Matlab

Materi

•Linear Congruent Method

•MetodeResuffle

•FungsiStandard MembangkitkanBilanganAcak

•GrafikdanStatistikBilanganAcak

Pseudo Random Number

•Bilanganacakyang dibangkitkanolehkomputermerupakanbilanganacaksemu, karenapembangkitannyamenggunakanoperasi-operasiaritmatika.

•Banyakalgoritmaataumetodeyang dapatdigunakanuntukmembangkitkanbilanganacak

Linear Congruent Method

Dimana: xn= adalahbil. acakken

a danc adalahkonstantaLCM

m adalahbatasmaksimumbilanganacak•Linear Congruent Method (LCM) merupakanmetodepembangkitkanbilanganacakyang banyakdigunakandalamprogram komputer.•LCM memanfaatkanmodel linier untukmembangkitkanbilanganacakyang didefinisikandengan:xn+1= ( a xn+ c ) mod m

x(1) = ( 2 (2) + 7 ) mod 10 = 1

x(2) = ( 2 (1) + 7 ) mod 10 = 9

x(3) = ( 2 (9) + 7 ) mod 10 = 5

x(4) = ( 2 (5) + 7 ) mod 10 = 7

x(5) = ( 2 (7) + 7 ) mod 10 = 1

x(6) = ( 2 (1) + 7 ) mod 10 = 9

x(7) = ( 2 (9) + 7 ) mod 10 = 5

x(8) = ( 2 (5) + 7 ) mod 10 = 7

Bilanganacakyang dibangkitkanadalah:

1 9 5 7 1 9 5 7

TerjadipengulanganbilangansecaraperiodikContoh1Membangkitkanbilanganacaksebanyak8 kali dengana=2, b=7, m = 10 danx(0)=2

x(1) = ( 4 (3) + 7 ) mod 15 = 4

x(2) = ( 4 (4) + 7 ) mod 15 = 8

x(3) = ( 4 (8) + 7 ) mod 15 = 5

x(4) = ( 4 (5) + 7 ) mod 15 = 12

x(5) = ( 4 (12) + 7 ) mod 15 = 10

x(6) = ( 4 (10) + 7 ) mod 15 = 2

x(7) = ( 4 (2) + 7 ) mod 15 = 0

x(8) = ( 4 (0) + 7 ) mod 15 = 7

Bilanganacakyang dibangkitkanadalah:

4 8 5 12 10 2 0 7

TidakterlihatpengulanganbilangansecaraperiodikContoh2Membangkitkanbilanganacaksebanyak8 kali dengana=4, b=7, m = 15 danx(0)=3

KesimpulanPadaLCM

KesimpulanPadaLCM

•Terjadipengulanganpadaperiodewaktutertentuatausetelahsekiankali pembangkitan, haliniadalahsalahsatusifatdarimetodeini, danpseudo random generatorpadaumumnya.

•PenentuankonstantaLCM (a, c danm) sangatmenentukanbaiktidaknyabilanganacakyang diperolehdalamartimemperolehbilanganacakyang seakan-akantidakterjadipengulangan.

MembuatFungsiPembangkitBilanganAcakDenganLCM

Tuliskanprogram fungsidibawahinidansimpandalamnamafile LCM.m

function x=LCM(xs)

% MembangkitkanbilanganacakdenganLCM

a=23; c=15; m=257;

x=mod(a*xs+c,m);

Fungsiinimenghasilkansatubilanganx, denganmemasukkanx sebelumnya(xs), sedangkana, c danm merupakankonstantayang harusdidefinisikan

MemanggilBilanganAcakDenganFungsiLCMMembangkitkan4 bilanganacakdenganx(0) = 10 adalahsebagaiberikut:>> LCM(10)ans=245>> LCM(245)ans=253>> LCM(253)ans=180>> LCM(180)ans=43

MemanggilBilanganAcakDenganFungsiLCMMembangkitkan20 bilanganacakdenganx(0) = 150 adalahsebagaiberikut:>> xs=150;>> for i=1:20x(i)=LCM(xs);xs=x(i);end>> xx =Columns 1 through 6 124 40 164 189 250 111Columns 7 through 12 255 226 73 152 170 70Columns 13 through 18 83 125 63 179 20 218Columns 19 through 20 146 32

MetodeResuffle

•Metodeinimelakukanpergantianposisipadabilanganacakdenganmeng-update nilaibilanganacakpadaposisiyang diganti.

•MetodeResuffledigunakanuntukmemperbaikibilanganacakdariLCM denganmenghilangkansifatperiodikyang adapadabilanganacak.

AlgoritmadariMetodeResuffle

1.Bangkitkann bilanganacakai[0,1] denganLCM

2.Bangkitkanbilanganacakbarub[0,1] denganLCM

3.Hitungk = n ×b

4.Hitungr = ak

5.Hitungak= b

6.Ambilnilair sebagaisebagaibilanganacakbarudanulangilangkah2.

ContohProgram Resuffle

Simpanprogram inidalamfile

resuffle.m% Nilaipembangkitan% danstate awala=4; c=1; m=9; r(1)=3;% membangkitkan9 bilacak% state awaldianggap1 bilfor i=1:9r(i+1)=mod(LCM(r(i)),10);enddisp(‘Sebelumresuffle:’)disp(r)% resuffle3 kalifor i=1:3r(10+i)=mod(a*r(9+i)+c,m);p=r(10+i);r(p+1)=p;enddisp(‘Sesudahresuffle:’)

FungsiStandard UntukMembangkitkanBilanganAcak

•FungsiuntukmembangkitkanbilanganacakdalamMatlabadalahrand().

•Fungsirand(m,n)membangkitkanbilanganacak0 s/d 1, sebanyakm barisdann kolom.

•Fungsirand(‘state’,a)digunakanuntukmenggantinilaistate awalbilanganacakataux(0) dalamLCM.

ContohMembangkitkanBilanganAcakDenganMatlab

•Membangkitkan10 bilanganacak0 s/d 1 dapatdigunakanfungsirand(1,10)

•Membangkitkanmatrikdenganukuran4x6 yang elemennyabilanganacak0 s/d 1 dapatdigunakanfungsirand(4,6)

•Membangkitkan10 bilanganacakbulat0 s/d 7 digunakanfungsifloor(8*rand(1,10))

•Membangkitkan10 bilanganacakantara4 s/d 10 digunakanfungsifloor(7*rand(1,10))+4

•Membangkitkanmatrik3x5 yang elemennyaacakdari0 s/d 7 digunakanfungsifloor(8*rand(3,5))

Tugas2

TuliskanfungsiatauperintahdalamMatlabuntukmembangkitkan:

(1)Bilanganacakganjilantara0 s/d10

(2)Bilanganacakantara0 s/d10 kecualibilangan6 dan7

GrafikdanStatistikBilanganAcak

•Plot

•Histogram

•PDF

•CDF

•AnalisaData

PLOT

Menampilkansemuabilanganacaknx(n)>> x=rand(1,8)x =Columns 1 through 3 0.4387 0.4983 0.2140Columns 4 through 6 0.6435 0.3200 0.9601Columns 7 through 8 0.7266 0.4120>> plot(x),grid>>

Histogram

Menampilkanhistogram daribilanganacak

H(x)>> x=floor(rand(1,15)*10)x =Columns 1 through 6 7 2 4 9 6 2Columns 7 through 12 8 6 1 2 6 6Columns 13 through 15 3 5 4>> t=0:9;>> h=hist(x,t);>> bar(t,h), gridx012345678900.511.522.53

AnalisaData PadaBilanganAcak

•Perintahrand() menghasilkanbilanganacakdengandistribusidata uniform, artinyabahwapeluangmunculnyasetiapbilangansamaataubiladilihatsecaragrafis, pdfnyaberupagarishorisontal.

•Untukmenunjukkandistribusibilanganacakyang dibangkitkandapatdigunakannilaihistogram, danfungsikepadatanprobabilitas.

•Disarankanmenggunakanpengujiandistribusiuntukmelakukananalisaterhadapdistribusidaribilanganacakyang dibangkitkan.

•Terjadipengulanganpadaperiodewaktutertentuatausetelahsekiankali pembangkitan, haliniadalahsalahsatusifatdarimetodeini, danpseudo random generatorpadaumumnya.

•PenentuankonstantaLCM (a, c danm) sangatmenentukanbaiktidaknyabilanganacakyang diperolehdalamartimemperolehbilanganacakyang seakan-akantidakterjadipengulangan.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s


%d blogger menyukai ini: