Presentasi dari Sanrio Hernanto, Crew dari Agate Studio dalam event Talent Development Saturday Agate Studio. http://agatestudio.com
Talent Development Saturday adalah acara Agate Studio crew sharing berbagai topik. Mulai dari Art, Programming, Game Production dan General Business/Management. TDS ini dilakukan tanggal 8 Februari 2014 di Bandung Digital Valley.
2. @agatestudio
PSEUDO RANDOM NUMBER
GENERATOR (PRNG)
• Algoritma untuk menghasilkan urutan angka yang terdistribusi secara random
• Urutan didapatkan berdasarkan nilai awal
Random Seed
initial value random number sequence
PRNG
3. @agatestudio
Pseudo Random Number Generator (PRNG)
• Keunggulan PRNG
– Speed
– Reproducibility
• Penggunaan
– Simulation Apps
– Procedural Generation
– Cryptography
4. • Blum Blum Shub
• Wichmann-Hill
• Complementary-multiply-with-
carry
• Inversive congruential generator
• ISAAC (cipher)
• Lagged Fibonacci generator
• Linear congruential generator
• Linear feedback shift register
• Maximal periodic reciprocals
• Mersenne Twister
• Multiply-with-carry
• Naor-Reingold Pseudorandom
Function
• Park–Miller random number
generator
• RC4 PRGA
• Well Equidistributed Long-period
Linear
• Xorshift
Contoh-contoh implementasi PRNG
5. @agatestudio
Mersenne Twister
• Algoritma PRNG yang dibuat pada tahun 1997
• PRNG pertama yang dapat menghasilkan
pseudorandom integer dengan kualitas tinggi dan
algoritma yang cepat
• PRNG yang banyak digunakan sampai sekarang
6. • PRNG Default
– R
– Python
– Ruby
– IDL
– Free Pascal
– PHP
– Maple
– MATLAB
– GAUSS
– CMU Common Lisp
– GNU Multiple Precision
Arithmetic Library
– GNU Scientific Library
Penggunaan Mersenne Twister
7. @agatestudio
Keunggulan Mersenne Twister
• Keunggulan
– Panjang deret yang sangat tinggi (2^19937 - 1)
– Telah diuji dengan berbagai tes untuk statistical
randomness
• Kelemahan
– Gagal melewati beberapa tes randomness
– Kurang cocok untuk kriptografi
8. @agatestudio
Extra Note
• Pseudo Random Number Generator tidak menghasilkan
nilai random yang sempurna, termasuk mersenne
twister.
• Untuk nilai random seed yang sama, algoritma mersenne
twister yang sama akan menghasilkan nilai yang sama
• Terdapat berbagai macam implementasi mersenne
twister, random seed yang sama pada implementasi
mersenne twister yang berbeda akan menghasilkan nilai
yang berbeda
9. Implementasi Mersenne Twister
Variasi Implementasi
– SFMT (SIMD-oriented Fast
Mersenne Twister)
– MTGP
Implementasi pada bahasa
pemrograman berbeda
– ActionScript
– Ada
– C++
– C#
– Java
– Javascript
– PHP
– Python
– etc