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 dan adalah bilangan bulat positif yang sudah ditentukan, dan dimana hal diatas artinya bahwa \(a x_{n-1}\) dibagi dengan 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 dan dapat dipilih untuk memenuhi 3 kriteria :

  1. Untuk sembarang nilai awal seed , deretan hasil memiliki pemunculan deret variable acak yang independent uniform (0,1)
  2. Untuk sembarang nilai awal seed , banyaknya variable yang dapat dibangkitkan sebelum terjadi perulangan cukup besar.
  3. 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

 

 

Leave a Reply

Your email address will not be published.

Captcha Captcha Reload