Seit 6 Jahren habe ich einen Zufallsgenerator auf meiner Website. Lange Zeit war es das erste oder zweite Ergebnis bei Google für "Zufallszahlengenerator" und wurde verwendet, um Dutzende, wenn nicht Hunderte von Wettbewerben und Zeichnungen in Diskussionsforen und Blogs zu entscheiden (ich weiß, weil ich die Verweise in meinem sehe Weblogs und in der Regel einen Blick darauf werfen).
Heute hat mir jemand eine E-Mail geschickt, um mir zu sagen, dass es möglicherweise nicht so zufällig ist, wie ich dachte. Sie versuchte sehr große Zufallszahlen zu generieren (z. B. zwischen 1 und 10000000000000000000) und stellte fest, dass diese fast immer die gleiche Anzahl von Ziffern hatten. In der Tat habe ich die Funktion in eine Schleife eingeschlossen, damit ich Tausende von Zahlen erzeugen konnte, und für sehr große Zahlen betrug die Variation nur etwa zwei Größenordnungen.
Warum?
Hier ist die Loop-Version, damit Sie sie selbst ausprobieren können:
http://andrew.hedges.name/experiments/random/randomness.html
Es enthält sowohl eine einfache Implementierung aus dem Mozilla Developer Network als auch Code aus dem Jahr 1997, den ich von einer nicht mehr vorhandenen Webseite entfernt habe (Paul Houles "Central Randomizer 1.3"). Zeigen Sie die Quelle an, um zu sehen, wie die einzelnen Methoden funktionieren.
Ich habe hier und anderswo über Mersenne Twister gelesen . Was mich interessiert, ist, warum es keine größeren Unterschiede in den Ergebnissen der in JavaScript integrierten Math.random- Funktion geben würde. Vielen Dank!