Selama 6 tahun saya memiliki halaman generator nomor acak di situs saya. Untuk waktu yang lama, ini adalah hasil pertama atau kedua di Google untuk "pembuat angka acak" dan telah digunakan untuk menentukan lusinan, jika bukan ratusan kontes dan gambar di forum diskusi dan blog (saya tahu karena saya melihat perujuk di log web dan biasanya pergi melihat-lihat).
Hari ini, seseorang mengirimi saya email untuk memberi tahu saya bahwa itu mungkin tidak seacak yang saya kira. Dia mencoba menghasilkan angka acak yang sangat besar (misalnya, antara 1 dan 1000000000000000000000) dan menemukan bahwa angka tersebut hampir selalu sama. Memang, saya membungkus fungsi dalam satu lingkaran sehingga saya bisa menghasilkan ribuan angka dan benar saja, untuk angka yang sangat besar, variasinya hanya sekitar 2 kali lipat.
Mengapa?
Ini adalah versi perulangannya, jadi Anda bisa mencobanya sendiri:
http://andrew.hedges.name/experiments/random/randomness.html
Ini mencakup implementasi langsung yang diambil dari Jaringan Pengembang Mozilla dan beberapa kode dari 1997 yang saya sapu dari halaman web yang tidak lagi ada ("Central Randomizer 1.3" dari Paul Houle). Lihat sumber untuk mengetahui cara kerja setiap metode.
Saya telah membaca di sini dan di tempat lain tentang Mersenne Twister. Yang saya minati adalah mengapa tidak akan ada variasi yang lebih besar dalam hasil dari fungsi Math.random bawaan JavaScript . Terima kasih!