Sekarang pertanyaannya adalah……apa algoritma untuk melakukan pembangkitan bilangan acak tersebut? Yeah, Anda dapat menggunakan rand() atau Math.Random() pada C++ atau System.Random pada C# (red. C sharp) atau java.util.Random pada Java. Namun, jika Anda memeriksa algoritma yang digunakan oleh fungsi-fungsi tersebut, Anda akan menemukan bahwa itu adalah RNG yang lambat…..masih ada cara untuk mempercepatnya beberapa CPU clock cylces…lagipula baru-baru ini ditemukan security flaw pada fungsi rand() sehingga bilangan acak ini dapat dibangkitkan kembali (artinya tidak benar-benar acak) dan ini merupakan ancaman yang serius untuk dunia kriptografi.
Kalau Anda adalah orang yang haus akan ilmu hacking dan matematika diskrit…….inilah jawabannya……..
Algortima pertama adalah R250/5231 yang diciptakan oleh Kirkpatrick dan Stoll yang dipublikasikan di A Very Fast Shift-Register Sequence Random Number Generator, J. Computational Physics, vol 40, pp. 517-526.
Algoritma yang kedua adalah Mersenne Twister yang diciptakan pada tahun 1996 oleh Matsumora dan Nishimura.
Source codenya dapat di compile dengan gcc v3.3…….atau kalau Anda benar-benar kreatif, ubahlah source code ini sesuai dengan keinginan Anda……tetapi jangan lupa pada kontribusi orang-orang yang menciptakan algoritma ini. Saya lupa kalau source code java dan C#nya juga ada. Berikut linknya dari semua source codenya.
http://www.4shared.com/file/32947855/4bc0a7c/RNG_520_dan_MT.html
Jangan lupa kasih komentarnya… Hhee…^_^
Tidak ada komentar:
Posting Komentar