Depuis 6 ans, j'ai une page de générateur de nombres aléatoires sur mon site Web. Pendant longtemps, c'était le premier ou le deuxième résultat sur Google pour "générateur de nombres aléatoires" et a été utilisé pour décider des dizaines, voire des centaines de concours et de dessins sur les forums de discussion et les blogs (je le sais car je vois les référents dans mon journaux Web et allez généralement jeter un oeil).
Aujourd'hui, quelqu'un m'a envoyé un courriel pour me dire que ce n'était peut-être pas aussi aléatoire que je le pensais. Elle a essayé de générer de très grands nombres aléatoires (par exemple, entre 1 et 10000000000000000000) et a constaté qu'il s'agissait presque toujours du même nombre de chiffres. En effet, j'ai enveloppé la fonction dans une boucle afin de pouvoir générer des milliers de nombres et bien sûr, pour de très grands nombres, la variation n'était que d'environ 2 ordres de grandeur.
Pourquoi?
Voici la version en boucle, vous pouvez donc l'essayer par vous-même:
http://andrew.hedges.name/experiments/random/randomness.html
Il comprend à la fois une implémentation simple tirée du Mozilla Developer Network et du code de 1997 que j'ai glissé d'une page Web qui n'existe plus ("Central Randomizer 1.3" de Paul Houle). Consultez la source pour voir comment chaque méthode fonctionne.
J'ai lu ici et ailleurs sur Mersenne Twister. Ce qui m'intéresse, c'est pourquoi il n'y aurait pas de plus grandes variations dans les résultats de la fonction Math.random intégrée de JavaScript . Merci!