4. BILANGAN ACAK dan Pembangkitannya

dokumen-dokumen yang mirip
Distribusi Bilangan Acak

Membangkitkan Bilangan Acak Menggunakan Matlab. Achmad Basuki

Membangkitkan Bilangan Acak Menggunakan Matlab

BAB 3 PEMBANGUNAN MODEL SIMULASI MONTE CARLO. Simulasi Monte Carlo merupakan salah satu metode simulasi sederhana yang

IMPLEMENTASI LINEAR CONGRUENT METHOD (LCM) UNTUK PENGACAKAN SOAL UJIAN BERKATEGORI

METODE MONTE CARLO. Presented by Muchammad Chusnan Aprianto Dr.KHEZ Muttaqien Istitute of Technology

BILANGAN ACAK (RANDOM NUMBER)

PEMBANGKIT BILANGAN ACAK (Random Number Generator)

BILANGAN ACAK. Metode untuk mendapatkan bilangan acak : 1. Metode Kongruen Campuran Rumus :

PEMBANGKIT RANDOM VARIATE

BAB II LANDASAN TEORI

BAB 2 TINJAUAN PUSTAKA DAN DASAR TEORI. adalah linear congruent method (LCM). Bahasa Pemrograman yang digunakan

SATUAN ACARA PERKULIAHAN MATA KULIAH SIMULASI (KB) KODE / SKS : KK / 3 SKS

Mata Kuliah Pemodelan & Simulasi

BAB III ANALISIS DAN PERANCANGAN. Perancangan game mencocokkan gambar ini dibuat agar dapat berjalan

Percobaan Perancangan Fungsi Pembangkit Bilangan Acak Semu serta Analisisnya

Bab IV Simulasi Metode Monte Carlo Mengatasi Masalah dalam Distribusi Data

BAB IV APLIKASI JARAK MAHALANOBIS

PERANCANGAN SIMULASI PENGACAKAN SOAL TRYOUT UNTUK MEMBENTUK PAKET SOAL UJIAN NASIONAL MENGGUNAKAN LINEAR CONGRUENT METHOD (LCM)

BAB III PROSES POISSON MAJEMUK

MODUL 1. Command History Window ini berfungsi untuk menyimpan perintah-perintah apa saja yang sebelumnya dilakukan oleh pengguna terhadap matlab.

PembangkitVariabelRandom

Sampling dengan Simulasi Komputer

Jurnal Ilmiah : MEDIA INFORMASI ANALISA DAN SISTEM (MEANS) ISSN :

#12 SIMULASI MONTE CARLO

Dasar-dasar Simulasi

KULIAH ANALISIS STATISTIK DATA SIMULASI Tipe-tipe simulasi berdasarkan analisis output:

Bab IV Simulasi dan Pembahasan

Pr { +h =1 = } lim. Suatu fungsi dikatakan h apabila lim =0. Dapat dilihat bahwa besarnya. probabilitas independen dari.

BAB II LANDASAN TEORI. digunakan untuk mendukung penyusunan laporan tugas akhir. Landasan teori

PEMODELAN BILANGAN ACAK DAN PEMBANGKITANNYA. Pemodelan & Simulasi

Cara memperoleh data: Zaman dahulu, dgn cara : Melempar dadu Mengocok kartu

BAB III ANALISA MASALAH DAN RANCANGAN PROGRAM

PEMBANGKIT BILANGAN ACAK

BAB V PENUTUP ( ( ) )

METODE MONTE CARLO. Pemodelan & Simulasi TM11

BAB I PENDAHULUAN. Keterampilan membaca sangat diperlukan oleh semua orang yang

STK 572 Manajemen Data Statistik

BAB II TINJAUAN PUSTAKA. komoditas, model pergerakan harga komoditas, rantai Markov, simulasi Standard

MODIFIKASI METODE LINEAR CONGRUENTIAL GENERATOR UNTUK OPTIMALISASI HASIL ACAK

BAB II TINJAUAN PUSTAKA. X(t) disebut ruang keadaan (state space). Satu nilai t dari T disebut indeks atau

PENS. Probability and Random Process. Topik 5. Beberapa jenis Distribusi Variabel Acak. Prima Kristalina April 2015

Studi dan Implementasi Integrasi Monte Carlo

MODUL I PENGENALAN MATLAB

Probabilitas dan Statistika Distribusi Peluang Kontinyu 1. Adam Hendra Brata

Analisis Model dan Simulasi. Hanna Lestari, M.Eng

FORMAT LAPORAN MODUL V DISTRIBUSI SAMPLING

FORMAT LAPORAN MODUL V DISTRIBUSI SAMPLING

PENERAPAN ALGORITMA STEEPEST ASCENT HILL CLIMBING DAN LINEAR CONGRUENT METHOD (LCM) DALAM GAME SLIDE PUZZLE PENGENALAN SEMBILAN SUNAN BERBASIS ANDROID

PERCOBAAN 1 PENGENALAN MATLAB UNTUK STATISTIK

PERANCANGAN SISTEM APLIKASI UNDIAN BERHADIAH PADA PT. PS MAJU BERSAMA MENGGUNAKAN LINEAR CONGRUENT METHOD (LCM)

LANDASAN TEORI. menyatakan hubungan antara variabel respon Y dengan variabel-variabel

FUNGSI Misalkan A dan B himpunan. Relasi biner f dari A ke B merupakan suatu fungsi jika setiap elemen di dalam A dihubungkan dengan tepat satu

Modul 2 Kontrol Program. Tujuan Memahami logika alur program Mampu menggunakan sintaks kontrol program dalam pemrograman

SIMULASI: Deterministik dan Monte Carlo

DISTRIBUSI VARIABEL RANDOM

Bab 2. Landasan Teori. 2.1 Fungsi Convex

BAB III SIMULASI SISTEM ANTRIAN M/M/1. paket data. Adapun kinerja yang akan dibahas adalah rata-rata jumlah paket dalam

BAB 4 PENYELESAIAN SISTEM PERSAMAAN LINEAR

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

BAB V IMPLEMENTASI SIMULASI MONTE CARLO UNTUK PENILAIAN OPSI PUT AMERIKA

Simulasi Monte Carlo

Journal of Informatics and Technology, Vol 1, No 4, Tahun 2012, p 1-8

BAGIAN 1 SINTAK DASAR MATLAB

Aplikasi Teori Bilangan Bulat dalam Pembangkitan Bilangan Acak Semu

BAB III ANALISIS MASALAH DAN RANCANGAN PROGRAM

I.1 TUJUAN MEMPELAJARI SIMULASI I.2.CARA MEMPELAJARI SISTEM

SIMULASI PENGENDALIAN PERSEDIAN GAS MENGGUNAKAN METODE MONTE CARLO DAN POLA LCM ( Studi Kasus di PT.PKM Group Cabang Batam )

Perbandingan dan Analisis True Random Number Generation terhadap Pseudorandom Number Generation dalam Berbagai Bidang

BAB III Algoritma Pelabelan Total Sisi-Ajaib Super

BAB 2 TINJAUAN PUSTAKA

PERANCANGAN APLIKASI KUIS WAWASAN KEBANGSAAN MENGGUNAKAN METODE LINEAR CONGRUENT METHODS (LCM)

PEMBANGKIT BILANGAN RANDOM RANDON NUMBER GENERATOR (RNG)

Pendiskritan Pembangkit Bilangan Acak Peta Logistik Menggunakan Fungsi Trigonometri Osilasi Tinggi

Haryoso Wicaksono, S.Si., M.M., M.Kom. 26

BAB 4 KEKONSISTENAN PENDUGA DARI FUNGSI SEBARAN DAN FUNGSI KEPEKATAN WAKTU TUNGGU DARI PROSES POISSON PERIODIK DENGAN TREN FUNGSI PANGKAT

Algoritma Evolusi Real-Coded GA (RCGA)

BAB IV PEMBAHASAN. Sebelum melakukan analisis dengan penerapan simulasi Monte Carlo dan VaR,

BAB II LANDASAN TEORI

SATIN Sains dan Teknologi Informasi

Manusia itu seperti pensil Pensil setiap hari diraut sehingga yang tersisa tinggal catatan yang dituliskannya. Manusia setiap hari diraut oleh rautan

Modul 14. PENELITIAN OPERASIONAL I MODEL SIMULASI. Oleh : Eliyani PROGRAM KELAS KARYAWAN PROGRAM STUDI TEKNIK INDUSTRI FAKULTAS TEKNOLOGI INDUSTRI

SIMULASI ANTRIAN PELAYANAN BONGKAR MUAT KAPAL

BAB 3 PEMBAHASAN. Contoh 1:

SATUAN ACARA PERKULIAHAN MATA KULIAH : SIMULASI & PERMODELAN ( S1 / TEKNIK INFORMATIKA) KODE / SKS : KK / 3 SKS

PEMILIHAN KEBIJAKAN SISTEM PENGGANTIAN SPARE PART PADA PERUSAHAAN CONSUMER GOOD DENGAN MENGGUNAKAN METODE SIMULASI

Materi Kuliah Matematika Komputasi FUNGSI

DISTRIBUSI PELUANG KONTINYU DISTRIBUSI PROBABILITAS

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA

MATERI KULIAH 25 NOVEMBER DESEMBER 2015 Sri Istiyari Uswatun Chasanah G Struktur aliran atau bagan program kontrol.

KONSEP DASAR PROBABILITAS DAN DISTRIBUSI PROBABILITAS LELY RIAWATI, ST, MT.

MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman

BAB IV PEMBAHASAN. 4.1 Proses Pencabangan model DTMC SIR

Strategi Menggunakan Algoritma Genetika

BAB 1 PENDAHULUAN Latar Belakang

BAB III ANALISIS DAN PERANCANGAN

Fungsi. Jika f adalah fungsi dari A ke B kita menuliskan f : A B yang artinya f memetakan A ke B.

BAB II TINJAUAN PUSTAKA

BAB III MODEL REGRESI BINOMIAL NEGATIF UNTUK MENGATASI OVERDISPERSI PADA MODEL REGRESI POISSON

Transkripsi:

4. BILANGAN ACAK dan Pembangkitannya 4.1. Pengantar Bilangan Acak Bilangan acak merupakan suatu besaran dasar dalam modeling dan teknikteknik simulasi. Pada modeling dan simulasi banyak sekali memanfaatkan bilangan acak sebagai besaran untuk mendapatkan penyelesaian suatu permasalahan simulasi. Untuk mendapatkan bilangan yang benar-benar acak, secara manual dapat dilakukan dengan menggunakan undian, arisan, atau pemakaian mesin roullete. Tetapi secara komputasi, hal ini sulit dilakukan. Hal ini disebabkan bahwa komputer merupakan mesin deterministik, sedangkan bilangan acak muncul sebagai kejadian yang probabilistic. Satu-satunya cara untuk mendapatkan bilangan acak adalah dengan meng-gunakan pseudo random generator (pembangkit bilangan acak semu), dimana bilangan acak diperoleh secara deterministik (aritmatik). Berbagai metode untuk membangkitkan bilangan acak banyak dibahas, dalam modul ini hanya dibahas beberapa macam metode saja, - LCM (linear Congruent Method), - Suffle Method, d - Rejection Method. 1

4. 2. M4.2. e t ometode d e LLinear i n e a rcongruent C o n g r(lcm) u e n t ( L C M ) Metode Linear Congruent ini sangat banyak digunakan untuk membangkitkan bilangan acak r1, r2,, rn yang bernilai [0,m] dengan memanfaatkan nilai sebelumnya. Untuk membangkitkan bilangan acak ke n+1 (r n+1 ) dengan metode Linear Congruent, didefinisikan: r ar cmod m n1 n dimana a,c dan m dinamakan nilai pembangkit, r0 dinamakan nilai awal, biasanya nilai ini yang di-gunakan dalam proses randomize (mengacak di awal atau state awal). Contoh 4.1. Misalkan ditentukan a=4, c=1 dan r1=3, maka bilangan acak 0 s/d 8 (m=9) dapat dihitung: r2=((4)(3)+1) mod 9 = 4 r3=((4)(4)+1) mod 9 = 8 r4=((4)(8)+1) mod 9 = 6 dan seterusnya. 2

4. 2. M4.2. e t ometode d e LLinear i n e a rcongruent C o n g r(lcm) u e n t ( L C M ) A l g o r i t m a d a r i m e t o d e L i n e a r C o n g r u e n t i n i Masukkan a, c, m dan r1 Masukkan berapa bilangan acak yang akan dibangkitkan (n) Untuk i=1 s/d n : hitung r(i+1)=(a.r(i)+c) mod m Implementasi dari metode Linear Congruet ini dengan MATLAB adalah s e b a g a i b e r i k u t : % Mendefinisikan nilai pembangkit a=4; c=1; m=9; % Mendefinisikan nilai state awal r(1)=3; %Proses pembangkitan 20 bilangan acak for k=1:20 r(k+1)=mod(a*r(k)+c,m); end %Menampilkan bilangan acak disp(r) 3

4. 2. M4.2. e t ometode d e LLinear i n e a rcongruent C o n g r(lcm) u e n t ( L C M ) Simpan program ini ke dalam file acak.m. Untuk menampilkan hasil bilangan acak dapat dituliskan nama variabelnya yaitu r: Coba tampilkan hasilnya, seperti contoh berikut: >> acak Columns 1 through 8 3 4 8 6 7 2 0 1 Columns 9 through 16 5 3 4 8 6 7 2 0 Columns 17 through 21 1 5 3 4 8 Perhatikan bahwa bilangan yang dihasilkan akan berulang setiap 9 bilangan, sehingga dapat dikatakan bahawa hasilnya tidak benarbenar acak! Disinilah menariknya mem-pelajari pembangkitan bilangan acak, yaitu mengubah mesin aritmatik menjadi mesin acak. Salah satu cara adalah dengan mengubah nilai pembangkitnya, misalkan dengan nilai pembangkit (a,c,m,r1) = (51,1,256,10) 4

4. 2. M4.2. e t ometode d e LLinear i n e a rcongruent C o n g r(lcm) u e n t ( L C M ) Untuk menganti nilai pembangkit, ubah nilai a,c, m dan r(1). Misalkan ubah dengan nilai (a,c,m,r1) = (327,1,512,11), maka ubah empat baris teratas dari program di atas yang tertulis: % Mendefinisikan nilai pembangkit a=4; c=1; m=9; % Mendefinisikan nilai state awal r(1)=3; menjadi % Mendefinisikan nilai pembangkit a=327; c=1; m=512; % Mendefinisikan nilai state awal r(1)=11; Perhatikan bagaimana hasilnya. Bila program ini dijalankan hasilnya akan menjadi: >> acak Columns 1 through 8 11 14 483 246 59 350 275 326 Columns 9 through 16 107 174 67 406 155 510 371 486 Columns 17 through 21 203 334 163 54 251 Terlihat sampai 21 bilangan belum terdapat pengulangan. 5

4. 2. M4.2. e t ometode d e LLinear i n e a rcongruent C o n g r(lcm) u e n t ( L C M ) Tugas 4.1. Dengan menggunakan program ini dapatkan sampai berapa bilangan angka 11 muncul lagi. Contoh 4.3. Jalankan program acak.m berkali-kali, perhatikan hasilnya akan sama. Bila dijalankan lagi hasilnya akan: >> acak Columns 1 through 8 11 14 483 246 59 350 275 326 Columns 9 through 16 107 174 67 406 155 510 371 486 Columns 17 through 21 203 334 163 54 251 Hasil ini sama dengan hasil sebelumnya Program acak.m di atas ubah nilai r(1) dengan : t=fix(clock); r(1)=floor(mod(t(6),m)); di baris paling atas. Fungsi fix dan floor adalah fungsi pem-bulatan digunakan untuk menjamin bilangan yang dihasilkan selalu bilangan bulat, dan fungsi mod adalah fungsi sisa pembagian yang digunakan untuk menjamin6 bilangan yang dihasilkan selalu lebih kecil dari m.

4. 2. M4.2. e t ometode d e LLinear i n e a rcongruent C o n g r(lcm) u e n t ( L C M ) Hasil dijalankan pertama: >> acak Columns 1 through 7 47 10 199 50 479 474 375 Columns 8 through 14 258 399 426 39 466 319 378 Columns 15 through 21 215 162 239 330 391 370 159 Hasil dijalankan kedua: >> acak Columns 1 through 7 24 169 480 289 296 25 496 Columns 8 through 14 401 56 393 0 1 328 249 Columns 15 through 21 16 113 88 105 32 225 360 Perhatikan hasilnya tidak pernah sama karena r(1) merupakan pengambilan nilai 1 ms. 7

4. 2. M4.2. e t ometode d e LLinear i n e a rcongruent C o n g r(lcm) u e n t ( L C M ) Contoh 4.4. Membangkitkan 20 bilangan acak 0 s/d 1dengan menggunakan fungsi standard dari MATLAB % Mendefinisikan state awal menggunakan waktu t=fix(clock) srand(t(6)) % Membangkitkan 20 bilangan acak % dilakukan dengan ukuran 1 baris 20 kolom x=rand(1,20) % Menampilkan bilangan acak disp(x) Simpan dengan nama file acak1.m, kemudian jalankan dengan menuliskan acak1. Hasil dari setiap komputer tidak akan sama. 8

4. 2. M4.2. e t ometode d e LLinear i n e a rcongruent C o n g r(lcm) u e n t ( L C M ) Contoh 4.5. Membangkitkan 20 bilangan acak 0 s/d 1 menggunakan LCM dengan nilai pembangkat (a,c,m) = (327,1,512) dan r1 adalah state awal yang dibangkitkan berdasarkan wkatu. % Mendefinisikan nilai pembangkit a=327; c=1; m=512; % Mendefinisikan nilai state awal t=fix(clock) r(1)=mod(t(6),m); %Proses pembangkitan 20 bilangan acak for k=1:19 r(k+1)=mod(a*r(k)+c,m); end r=r/m; %Menampilkan bilangan acak disp(r) Simpan dengan nama file acak2.m 9

4. 2. M e t o d e L i n e a r C o n g r u e n t ( L C M ) Tugas 4.2. Jalankan kedua program di atas (acak1.m dan acak2.m) dengan terlebih dahulu mengubah jumlah bilangan acaknya dengan 1000 bilangan acak, kemudian tuliskan perintah untuk menghitung histogram dari masing-masing bilangan acak sebagai berikut: h1=hist(x,10); h2=hist(r,10); Untuk menggambar histogramnya sebagai berikut: subplot(1,2,1), plot(h1), grid subplot(1,2,2), plot(h2), grid Perhatikan kemunculan setiap kejadian (range angka 0.1) dan apa yang berbeda. Untuk menjelaskan perbedaan bisa digunakan perhitungan statistik untuk: Menghitung ekspektasi dari kedua bilangan acak tersebut. Menghitung pengujian interval dari kedua distribusi di atas dengan menganggap salah satu sebagai nilai acuan. 10

4. 3. M e t o d e S h u f f l e U n t u k M e m p e r b a i k i B i l a n g a n A c a k Untuk memperbaiki hasil distribusi bilangan acak yang dibangkitkan dengan metode linear congruent agar seakan-akan tidak berulang, dapat digunakan metode suffle, yaitu mengganti kedudukan bilangan acak berdasarkan indeks pada barisan bilangan acaknya. Algoritma metode suffle ini adalah: 1. Bangkitkan n bilangan acak ai [0,1] dengan LCM 2. Bangkitkan bilangan acak baru b [0,1] dengan LCM 3. Hitung k = n b 4. Hitung r = ak 5. Hitung ak = b Ambil nilai r sebagai sebagai bilangan acak baru dan ulangi langkah 2. Kedua macam metode pembangkitan bilangan acak di atas (LCM dan Suffle) akan menghasilkan bilangan acak dengan distribusi uniform, dalam arti banyak kemungkinan munculnya setiap bilangan adalah sama. Berikut ini akan dibahas bagaimana membangkitkan bilangan acak dengan distribusi tertentu. 11

4. 3. M e t o d e S h u f f l e U n t u k M e m p e r b a i k i B i l a n g a n A c a k Tugas 4.2. Jalankan kedua program di atas (acak1.m dan acak2.m) dengan terlebih dahulu mengubah jumlah bilangan acaknya dengan 1000 bilangan acak, kemudian tuliskan perintah untuk menghitung histogram dari masing-masing bilangan acak sebagai berikut: h1=hist(x,10); h2=hist(r,10); Untuk menggambar histogramnya sebagai berikut: subplot(1,2,1), plot(h1), grid subplot(1,2,2), plot(h2), grid Perhatikan kemunculan setiap kejadian (range angka 0.1) dan apa yang berbeda. Untuk menjelaskan perbedaan bisa digunakan perhitungan statistik untuk: Menghitung ekspektasi dari kedua bilangan acak tersebut. Menghitung pengujian interval dari kedua distribusi di atas dengan menganggap salah satu sebagai nilai acuan. 12

4. 3. M e t o d e S h u f f l e U n t u k M e m p e r b a i k i B i l a n g a n A c a k Contoh 4.6. Bangkitkan 10 bilangan acak 0 s/d 9 atau ditulis [0 9] meng-gunakan metode LCM (a,c,m,r1)=(4,1,9,3), kemudian lakukan resuffle 3 kali. Tuliskan program di bawah ini, kemudian simpan dalam file acakre1.m % Nilai pembangkitan dan state awal a=4; c=1; m=9; r(1)=3; % membangkitkan 9 bilangan acak % karena state awal dianggap 1 bilangan for i=1:9 r(i+1)=mod(a*r(i)+c,m); end disp('sebelum resuffle:') disp(r) % resuffle 3 kali for i=1:3 r(10+1)=mod(a*r(9+i)+c,m); p=r(10+i); r(p+1)=p; end disp('sesudah resuffle:') 13

4. 3. M e t o d e S h u f f l e U n t u k M e m p e r b a i k i B i l a n g a n A c a k Jalankan program dengan menuliskan acakre1, dan hasilnya adalah: >> acakre1 Sebelum resuffle: Columns 1 through 8 3 4 8 6 7 2 0 1 Columns 9 through 10 5 3 Sesudah resuffle: Columns 1 through 8 3 4 8 6 4 2 6 1 Columns 9 through 10 8 3 14

4.4.Membangkitkan Bilangan Acak Berdistribusi Non-Uniform Untuk membangkitkan bilangan acak a k yang berdistribusi non-uniform dengan fungsi f(a) yang didefinisikan berada pada [a min, a max ]. Jika integral dari fungsi f(a) dapat dihitung misalkan F(a) maka kita dapat membangkitkan bilangan acak ak dengan mentransformasikan bilangan acak 0<y< 1 dengan: a = F-1(y) Sebagai contoh dibangkitkan bilangan acak berdistribusi eksponensial sebagai berikut: dimana m adalah konstanta. Maka bangkitkan bilangan acak berdistribusi uniform y=[0,1], kemudian hitung : a F 1 ( y) ln( y) m Bangkitkan bilangan acak [0,1] yang berditribusi Maka integral fungsi f(a) adalah: F(a) = ½ e-2ª Sehingga invers dari F(a) adalah : a = - ln(y) / 2 15

4.4.Membangkitkan Bilangan Acak Berdistribusi Non-Uniform Implementasi dengan menggunakan MATLAB untuk mem-bangkitkan 10 bilangan acak berdistribusi f(a) adalah sebagai berikut: Bangkitkan 1000 bilangan acak uniform sebagai berikut: >> a=rand(1,1000) a = Columns 1 through 5 0.7382 0.1763 0.4057 0.9355 0.9169 Columns 6 through 10 0.4103 0.8936 0.0579 0.3529 0.8132 Gunakan fungsi a = -ln(y)/2 untuk membangkitkan bilangan acak eksponensial. >> b=-log(a)/2; >> b=b/max(b) b = Columns 1 through 5 0.1065 0.6092 0.3166 0.0234 0.0304 Columns 6 through 10 0.3127 0.0395 1.0000 0.3656 0.072 16

4.4.Membangkitkan Bilangan Acak Berdistribusi Non-Uniform Bila diperhatikan histogramnya sebagai berikut: subplot(2,1,1), hist(a,10),grid title('histogram Uniform') subplot(2,1,2), hist(b,10),grid title('histogram Eksponensial') Hasilnya adalah sebagai berikut: 17

4.5. M embangki tkan Bilangan Acak Berdistribusi Poisson Fungsi kepadatan probabilitas untuk distribusi Poisson dengan nilai rara-rata m didefinisikan: dimana i = 0,1,2,3,. Untuk membangkitkan bilangan acak berdistribusi Poisson digunakan nilai m dan pembangkitan bilangan acak uniform dengan menggunakan metode invers diperoleh bahwa: p m i 1 e i1 p i i m i! dimana i 0 Algoritma untuk membangkitkan bilangan acak berdistribusi Poisson adalah sebagai berikut: Dengan mengetahui rata-rata distribusi poisson m, maka : p 0 e p( i) m m Seterusnya tinggal memanfaatkan model rekursi dari pi. 18

4.5. M embangki tkan Bilangan Acak Berdistribusi Poisson Contoh 4.9. Membangkitkan n bilangan acak berdistribusi poisson dengan rata-rata m adalah sebagai berikut: % Set nilai rata-rata poisson (m) dan Jumlah bilangan acak yang dibangkitkan (n) m=input( Rata-rata poisson = ); n=input( Jumlah bilangan acak = ); % Membangkitkan 10 bilangan acak berdistribusi poisson for bil=1:n u=rand; i=0; p=exp(-m); F=p; sw=0; while sw==0; if u<f x(bil)=i; sw=1; else p=m*p/(i+1); F=F+p; i=i+1; end end end % Menampilkan bilangan acak disp(x); 19

4.5. M embangki tkan Bilangan Acak Berdistribusi Poisson Simpan dalam file poisson1.m, kemudian jalankan dengan memasukkan m=3 dan n=1000, hasilnya adalah: >> poisson1 Rata-rata poisson = 3 Jumlah bilangan acak = 10 Columns 1 through 8 4 3 3 4 1 3 1 2 Columns 9 through 10 2 5 Dengan histogram sebagai berikut: % Menampilkan histogram dari bilangan acak yang diperoleh t=min(x):max(x); h=hist(x,t); bar(t,h), grid 20

4. 6. M e t o d e R e j e c t i o n Metode Rejection ini merupakan metode pembangkitan bilangan acak yang secara langsung memanfaatkan fungsi ditsribusi bilangan acak f(a). Bila bilangan acak yang dibangkitkan berada pada daerah fungsi f(a) maka a diterima dan bila tidak, maka a ditolak. Metode ini sangat sederhana tetapi untuk membangkitkan banyak bilangan acak diperlukan waktu yang cukup lama. Algoritma metode rejection: 1. Bangkitkan 2 bilangan acak berditribusi uniform x dan y dengan [0,1]. 2. Bila y<f(x) maka x diterima dan bila tidak x ditolak. 21

4. 6. M e t o d e R e j e c t i o n Contoh 4.9. Bangkitkan 10 bilangan acak berdistribusi Poisson : e f ( a) m a! m a dimana m adalah nilai rata-rata Hasil dari pembangkitkan bilangan acak berdistribusi poisson dengan rata-rata 2 untuk a=[0,10] menggunakan metode rejection adalah sebagai berikut: x y f(x) x y f(x) 8 3 0.00 ditolak 3 9 0.18 ditolak 1 4 0.27 ditolak 7 0 0.00 diterima 3 10 0.18 ditolak 7 0 0.00 diterima 2 1 0.27 diterima 3 8 0.18 ditolak 7 6 0.00 ditolak 0 9 0.14 ditolak 2 5 0.27 ditolak 0 7 0.14 ditolak 4 8 0.09 ditolak 4 9 0.09 ditolak 4 4 0.09 ditolak 0 10 0.14 ditolak 10 5 0.00 ditolak 6 5 0.01 ditolak 10 0 0.00 diterima 2 3 0.27 ditolak 22

4. 6. M e t o d e R e j e c t i o n Dari hasil di atas terlihat bahwa untuk membangkitkan 10 bilangan acak, diperlukan 97 kali percobaan, ini menunjukkan bahwa metode ini tidak terlalu cepat untuk membangkitkan suatu bilangan acak. Tetapi metode ini memang sangat mudah diimplementasikan karena tidak berurusan dengan inversi dari fungsi distribusi f(a) yang terkadang cukup rumit. Metode rejection ini merupakan suatu metode pem-bangkitan bilangan acak yang banyak dibicarakan, meskipun tidak terlalu cepat ternyata membawa implikasi yang menarik yang akan mengantarkan ke arah pencarian acak (random walk) yang sangat terkenal. Metode ini juga menjadi dasar dari Metode Monte Carlo yang akan di bahas pada bab 5. Implementasi Metode Rejection untuk membangkitkan bilangan acak [0,9] berdistribusi poisson dalam MATLAB adalah sebagai berikut: 23

4. 6. M e t o d e R e j e c t i o n % Memasukkan jumlah bilangan acak yang dibangkitkan n=input('jumlah bilangan acak? '); % Menentukan nilai parameter poisson % misalkan m=3 m=3; % Metode rejection k=0; i=0; while k<=n i=i+1; x=floor(11*rand); y=rand; p=exp(-m)*m^x/factorial(x); fprintf('iterasi ke %d : %d %1.2f %1.2f ---> ',i,x,y,p); 24

4. 6. M e t o d e R e j e c t i o n if y<=p k=k+1; b(k)=x; fprintf('diterima\n'); else fprintf('ditolak\n'); end end %Menampilkan bilangan acak poisson disp(b) Simpan dalam file acakn.m, kemudian jalankan dengan menuliskan acakn, perhatikan untuk sejumlah bilangan diperlukan jumlah iterasi yang sangat besar dibandingkan dengan jumlah bilangan acak yang dihasilkan. 25

4. 6. M e t o d e R e j e c t i o n Tugas 4.3. Dengan menggunakan program acakn di atas, bangkitkan n bilangan berkali-kali sesuai tabel berikut ini: Jumlah bilangan yang dibangkitkan Jumlah iterasi 1 2 4 8 10 15 16 20 32 40 50 64 100 26

4. 6. M e t o d e R e j e c t i o n Gambarkan hasilkan sebagai berikut: Jumlah Iterasi Jumlah bilangan 27

4. 6. M e t o d e R e j e c t i o n Tugas 4.3. Buatlah program sederhana untuk membangkitkan bilangan acak [0,1] berdistribusi normal dengan ratarata =0.5 dan standard deviasi =0.2 dengan menggunakan metode rejection. 1. Distribusi normal dengan rata-rata dan standard deviasi didefinisikan : f ( x) 1 e 2 x 2 2 2 2. Hitung waktu yang dibutuhkan untuk membangkitkan 100, 1000, 10000 dan 100000 bilangan acak. 28