Od 6 lat mam na swojej stronie generator liczb losowych . Przez długi czas był to pierwszy lub drugi wynik w Google dla „generatora liczb losowych” i był używany do decydowania o dziesiątkach, jeśli nie setkach konkursów i rysunków na forach dyskusyjnych i blogach (wiem, bo widzę odnośniki w moim dzienniki internetowe i zwykle zajrzyj).
Dzisiaj ktoś wysłał mi e-maila z informacją, że może nie być tak przypadkowe, jak myślałem. Próbowała wygenerować bardzo duże liczby losowe (np. Od 1 do 10000000000000000000) i odkryła, że są one prawie zawsze taką samą liczbą cyfr. Rzeczywiście, zawinąłem funkcję w pętlę, dzięki czemu mogłem wygenerować tysiące liczb i oczywiście, dla bardzo dużych liczb, zmienność wynosiła tylko około 2 rzędów wielkości.
Czemu?
Oto wersja zapętlona, więc możesz ją wypróbować:
http://andrew.hedges.name/experiments/random/randomness.html
Zawiera zarówno prostą implementację zaczerpniętą z sieci Mozilla Developer Network, jak i kod z 1997 roku, który usunąłem ze strony internetowej, która już nie istnieje („Central Randomizer 1.3” Paula Houle'a). Wyświetl źródło, aby zobaczyć, jak działa każda metoda.
Czytałem tutaj i gdzie indziej o Mersenne Twister. Interesuje mnie to, dlaczego nie byłoby większych odchyleń w wynikach z wbudowanej funkcji Math.random JavaScript . Dzięki!