Pembangkit Bilangan Acak Pesudo
Salah satu pendekatan yang sering digunakan dalam membangkitkan bilangan acak pseudo (pseudorandom numbers) adalah memulainya dengan sebuah nilai awal x0 yang sering disebut sebagai bibit/seed, kemudian komputer akan membangkitkan bilangan nilai-nilai berikutnya yaitu xn, \(n\geq 1\) secara rekursif, dengan cara memisalkan :
\(x_{n}= a x_{n-1} \; modulo \; m\) … (3.1)
dimana a dan m adalah bilangan bulat positif yang sudah ditentukan, dan dimana hal diatas artinya bahwa \(a x_{n-1}\) dibagi dengan m dan sisa baginya diambil sebagai nilai dari \( x_{n}\). Dengan demikian setiap \( x_{n}\) bisa bernilai salah satu diantara \(0,1,\cdots,m-1\) dan kuantitas dari \(x_{n}/m\) – disebut sebuah bilangan acak pseudo (pseudorandom number)- diambil sebagai nilai pendekatan untuk nilai dari variabel acak uniform (0,1).
Pendekatan yang ditentukan dengan persamaan 3.1 dalam membangkitkan bilangan acak tersebut sering disebut Multiplicative Congruential Method. Karena setiap angka \( x_{n}\) yang akan bernilai salah satu dari \(0,1,\cdots,m-1\), pada suatu saat setelah sejumlah pembangkitan tertentu akan terjadi perulangan; dan seketika ini terjadi, keseluruhan deret bilangan akan kembali berulang. Dengan demikian, kita seyogyanya ingin memilih konstanta a dan m sedemikian sehingga, untuk sembarang seed \( x_{0}\), banyaknya variable yang dapat dibangkitkan sebelum terjadi perulangan terjadi cukup besar.
Secara umum konstanta a dan m dapat dipilih untuk memenuhi 3 kriteria :
- Untuk sembarang nilai awal seed , deretan hasil memiliki pemunculan deret variable acak yang independent uniform (0,1)
- Untuk sembarang nilai awal seed , banyaknya variable yang dapat dibangkitkan sebelum terjadi perulangan cukup besar.
- Nilai-nilai ini dapat dihitung secera efisien dengan menggunakan komputer
Untuk memenuhi ketiga kondisi tersebut di atas, sebaiknya m dipilih dari bilangan prima yang cukup besar, biasanya disesuaikan dengan kemampuan komputer yang digunakan dan ukuran word. Untuk mesin 32 bit (dimana bit pertama digunakan sebagai bit penanda / sign bit), pemilihan m = \( 2^{31} – 1\) dan \( a = 7^5 = 16807\) menghasilkan hasil yang diinginkan.
Pembangkit bilangan acak lainnya adalah :
\(x_{n}= (a x_{n-1}+c) \; modulo \; m\)pembangkit ini diberi nama mixed congruential generators. Pembangkit ini dianggap lebih baik hasilnya dari pembangkit sebelumnya.
Kebanyakan bahasa pemrograman komputer sudah menyediakan pembangkit bilangan acak nya sendiri. Misalnya dalam bahasa BASIC, bahasa ini menggunakan 2 (dua) buah perintah yaitu :
1 RANDOMIZE
2 U = RND
Contoh program yang menghasilkan 10 (sepuluh) buah bilangan acak :
10 RANDOMIZE
20 FOR I = 1 TO 10
30 U = RND
40 PRINT U
50 NEXT