Per 6 anni ho avuto una pagina di generatore di numeri casuali sul mio sito web. Per molto tempo, è stato il primo o il secondo risultato su Google per "generatore di numeri casuali" ed è stato utilizzato per decidere decine, se non centinaia di concorsi e disegni su forum di discussione e blog (lo so perché vedo i referrer nel mio log web e di solito vai a dare un'occhiata).
Oggi, qualcuno mi ha inviato un'e-mail per dirmi che potrebbe non essere così casuale come pensavo. Ha provato a generare numeri casuali molto grandi (ad esempio, tra 1 e 10000000000000000000) e ha scoperto che erano quasi sempre lo stesso numero di cifre. In effetti, ho avvolto la funzione in un ciclo in modo da poter generare migliaia di numeri e abbastanza sicuro, per numeri molto grandi, la variazione era solo di circa 2 ordini di grandezza.
Perché?
Ecco la versione in loop, quindi puoi provarla tu stesso:
http://andrew.hedges.name/experiments/random/randomness.html
Comprende sia un'implementazione semplice presa dal Mozilla Developer Network sia un codice del 1997 che ho cancellato da una pagina web che non esiste più ("Central Randomizer 1.3" di Paul Houle). Visualizza l'origine per vedere come funziona ciascun metodo.
Ho letto qui e altrove di Mersenne Twister. Quello che mi interessa è perché non ci sarebbe una maggiore variazione nei risultati della funzione Math.random incorporata in JavaScript . Grazie!