@agatestudio
Pseudo Random Number Generator
&
Mersenne Twister
Sanrio Hernanto
Knight
Agate Studio
@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
@agatestudio
Pseudo Random Number Generator (PRNG)
• Keunggulan PRNG
– Speed
– Reproducibility
• Penggunaan
– Simulation Apps
– Procedural Generation
– Cryptography
• 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
@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
• 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
@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
@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
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
Sekian
Terima Kasih

PNRG & MT by Rio

  • 1.
    @agatestudio Pseudo Random NumberGenerator & Mersenne Twister Sanrio Hernanto Knight Agate Studio
  • 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 NumberGenerator (PRNG) • Keunggulan PRNG – Speed – Reproducibility • Penggunaan – Simulation Apps – Procedural Generation – Cryptography
  • 4.
    • Blum BlumShub • 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 • AlgoritmaPRNG 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 • PseudoRandom 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 VariasiImplementasi – SFMT (SIMD-oriented Fast Mersenne Twister) – MTGP Implementasi pada bahasa pemrograman berbeda – ActionScript – Ada – C++ – C# – Java – Javascript – PHP – Python – etc
  • 10.