PEMODELAN BILANGAN ACAK DAN PEMBANGKITANNYA Pemodelan & Simulasi
Bilangan Acak • B „ ilangan acak adalah bilangan yang kemunculannya terjadi secara acak. • Bilangan acak ini penting untuk keperluan simulasi. • Algoritma Congruential Pseudo Random Number Generator: – Linear Congruential Generator (LCG) – Multiplicative Random Number Generator – Mixed Congruential Random Number Generator • Pembangkit bilangan acak harus: – – – –
Mpy distribusi seragam dan tdk ada korelasi antar bilangan. Membangkitkan dengan cepat, tdk memerlukan memori yg besar. Dapat direproduksi (dibangkitkan kembali). Periode besar, krn mungkin bilangan acak dibangkitkan berulang.
• Bilangan acak (random) banyak digunakan di dalam kriptografi; misalnya untuk pembangkitan parameter kunci pada algoritma kunci-publik, pembangkitan Initialization Vector (IV) pada algoritma kunci-simetri, dan sebagainya. • Tidak ada komputasi yang benar-benar menghasilkan deret bilangan acak secara sempurna. • Bilangan acak yang dihasilkan dengan rumus-rumus matematika adalah bilangan acak semu (pseudo), karena pembangkitan bilangannya dapat diulang kembali. • Pembangkit deret bilangan acak disebut Pseudo-random Number Generator (PRNG).
1. Linear Congruential Generator (LCG) Pembangkit bilangan acak Linear Congruential Generator atau LCG adalah PRNG yang berbentuk: Zn = (a.Z n – 1 + c) mod m Zn = bilangan acak ke-n dari deretnya Z n – 1 = bilangan acak sebelumnya a = faktor pengali c = increment m = modulus Kunci pembangkit adalah Z0 yang disebut umpan (seed).
Example 1
Example 2
Example 3
Latihan 1) Bangkitkan 10 bilangan pertama dari bilangan acak menggunakan algoritma LCG dengan Z0 = 79, m = 100, a = 263, dan c = 71 2) Buatlah coding-nya menggunakan matlab
• LCG mempunyai periode tidak lebih besar dari m, dan pada kebanyakan kasus periodenya kurang dari itu. • LCG mempunyai periode penuh (m – 1) jika memenuhi syarat berikut: * b relatif prima terhadap m. * a – 1 dapat dibagi dengan semua faktor prima dari m * a – 1 adalah kelipatan 4 jika m adalah kelipatan 4 * m > maks(a, c, Z0) * a > 0, c > 0 • Keunggulan LCG terletak pada kecepatannya dan hanya membutuhkan sedikit operasi bit. • Sayangnya, LCG tidak dapat digunakan untuk kriptografi karena bilangan acaknya dapat diprediksi urutan kemunculannya.
• Oleh karena itu LCG tidak aman digunakan untuk kriptografi. Namun demikian, LCG tetap berguna untuk aplikasi nonkriptografi seperti simulasi, sebab LCG memperlihatkan sifat statistik yang bagus dan sangat tepat untuk uji-uji empirik. Pembangkit Bilangan Acak yang Aman untuk Kriptografi Pembangkit bilangan acak yang cocok untuk kriptografi dinamakan Cryptographically Secure Pseudorandom Generator (CSPRNG). Persyaratan CSPRNG adalah: • Secara statistik CSPRNG mempunyai sifat-sifat yang bagus (yaitu lolos uji keacakan statistik). • Tahan terhadap serangan (attack) yang serius. Serangan ini bertujuan untuk memprediksi bilangan acak yang dihasilkan.
Memilih a, c dan m Parameter a, c dan m harus dipilih sedemikian shg dapat mewujudkan panjang siklus maksimum (maximum cycle length). m = 2b-1, dengan b ditentukan berdasar jumlah bit per word dlm komputer yg digunakan. Sebagian komputer menggunakan 32 bit per word shg angka 31 merupakan pilihan yg baik bagi b. Nilai c dan m sedemikian shg faktor persekutuan terbesarnya adl 1. Nilai a = 1 + 4k, dengan k adl bilangan bulat. Panjang siklus maksimum yg dicapai sebuah LCG adl m. LCG dpt mencapai panjang siklus penuh 2 31 2,1 milyar bilangan acak. Nilai c bukan mrpk kelipatan dari m dan hrs bilangan ganjil.
2. Multiplicative Random Number Generator Algoritma Multiplicative Random Number Generator, membangkitan bilangan pseudo menggunakan formula: Zn = (a.Z n – 1 ) mod m Bilangan pseudo dimulai dengan nilai awal Z0 yg disebut seed Parameter a dan m = bilangan bulat positif tertentu Supaya Zn dpt berperilaku acak: Nilai m dipilih sebesar mungkin untuk memperbesar periode. Nilai a dipilih agar korelasi antar Zn minimum. Nilai Z0 dipilih bilangan bulat positif ganjil dan cukup besar, Z0 < m, misalnya Z0 = 12357. Bilangan acak: Ui = Zi / m
Pemilihan nilai-nilai parameter: • Nilai m dipilih berdasarkan panjang word yg digunakan oleh komputer. Misalnya komputer 32 bits, maka digunakan m = 2 32 – 1 = 2147483648 Bgmn utk komputer 16 bits atau 8 bits atau 64 bits? • Pemilihan nilai a : Nilai a harus mrpk bilangan prima dan ganjil. Dapat dipilih a = 2 (b/2) 3, dengan b adl jumlah bit word komputer yg digunakan. Contoh: Menggunakan komputer 12 bits Maka m = 2 11 = 2048 a = 67 a 2 6 Z0 = 129
Hasil pembangkitan Zn (4 nilai pertama) adalah:
Bilangan acak yang diperoleh:
3. Mixed Congruential Generator • Disebut juga dengan algoritma Mixed Congruential Random Number Generator. • Formula: n a 1 n Zn a Z0 C (mod m) a 1
Persyaratan: • n adalah bilangan bulat dan c adalah bilangan prima • Bila c adalah bilangan prima terhadap n maka faktor persekutuan terbesar dari m dan c adalah 1 • a = 1(mod q) untuk setiap faktor prima q dari m • a = 1(mod 4) bila 4 adalah salah satu faktor dari m