Ich mache einige Simulationen der Langevin-Gleichung für verschiedene äußere Kräfte. Da mir gesagt wird, dass Cs rand()
von zu stdlib.h
Verzerrungen in meinen Ergebnissen führen können, verwende ich einen Mersenne Twister.
Trotzdem möchte ich genau wissen (und sehen), welche Art von Fehlern ein linearer Kongruenzgenerator in meine Simulation einbringen kann. Dies sind Dinge, die ich ausprobiert habe:
- Generieren von 3D-Tupeln von Zufällen, um zu versuchen, Hyperebenen zu sehen. Ich kann nichts sehen.
- Ausführen der FFT eines großen Vektors von Zufallszahlen. Es ist fast das gleiche für den Mersenne Twister und
rand()
. - Überprüfung des Equipartition-Prinzips für ein Teilchen in Brownscher Bewegung. Beide Integratoren stimmen im erwarteten Wert von mit der gleichen Anzahl signifikanter Stellen .
- Zu sehen, wie gut sie in einer Anzahl von Behältern sind, die keine Potenz zwei ist. Beide liefern die gleichen qualitativen Ergebnisse, keiner ist besser.
- Schauen Sie sich die Brownschen Pfade an, um klare Abweichungen von . Wieder kein Glück.
- Punkteverteilung im Kreis. Gefüllt und nur im Umkreis. Zwischen allen und zwischen den nächsten Nachbarn (Shors Antwort unten in den Kommentaren). In dieser Liste verfügbar , führen Sie sie einfach mit Julia 0.5.0 aus, nachdem Sie die erforderlichen Bibliotheken installiert haben (Anweisungen finden Sie in der Liste).
Ich möchte betonen, dass ich nach einer eingeführten Verzerrung im Kontext physikalischer Simulationen suche. Ich habe zum Beispiel gesehen, wie rand()
kläglich die härtesten Tests scheitern, während der Mersenne Twister es nicht tut, aber im Moment bedeutet das nicht zu viel für mich.
Haben Sie physikalische, konkrete Beispiele, wie ein schlechter Zufallszahlengenerator eine Montecarlo-Simulation zerstört?
Hinweis: Ich habe gesehen, wie RANDU
schrecklich PRNG sein kann. Ich interessiere mich für nicht offensichtliche Beispiele von Generatoren, die unschuldig aussehen, aber letztendlich Voreingenommenheit hervorrufen.