Der Mersenne Twister gilt weithin als gut. Heck, die CPython-Quelle sagt, dass es "einer der am umfassendsten getesteten Generatoren ist, die es gibt". Aber was heißt das? Wenn ich gefragt werde, ob ich die Eigenschaften dieses Generators auflisten soll, ist das meiste, was ich anbieten kann, schlecht:
- Es ist massiv und unflexibel (zB keine Suche oder mehrere Streams),
- Trotz seiner gewaltigen Zustandsgröße scheitert es an statistischen Standardtests.
- Es hat ernsthafte Probleme um 0, was darauf hindeutet, dass es sich selbst ziemlich schlecht randomisiert,
- Es ist kaum schnell
und so weiter. Im Vergleich zu einfachen RNGs wie XorShift * ist dies auch hoffnungslos kompliziert.
Also suchte ich nach Informationen, warum dies jemals für gut gehalten wurde. Das Originalpapier enthält viele Kommentare zur "superastronomischen" Periode und zur 623-dimensionalen Gleichverteilung
Unter vielen bekannten Maßnahmen werden die auf der höheren Maßgleichmäßigkeit beruhenden Tests, wie der nachstehend beschriebene Spektraltest (vgl. Knuth [1981]) und der K-Verteilungstest, als am stärksten angesehen.
Aber für diese Eigenschaft wird der Generator von einem Zähler von ausreichender Länge geschlagen! Dies macht keinen Kommentar zu lokalen Distributionen, worum es Ihnen in einem Generator eigentlich geht (obwohl "lokal" verschiedene Dinge bedeuten kann). Und selbst CSPRNGs interessieren sich nicht für so große Zeiträume, da dies nur nicht im entferntesten wichtig ist.
Es gibt eine Menge Mathe in der Zeitung, aber soweit ich das beurteilen kann, geht es hier eigentlich um die Qualität der Zufälligkeit. So gut wie jede Erwähnung davon geht schnell auf diese ursprünglichen, größtenteils nutzlosen Behauptungen zurück.
Es scheint, als wären die Leute auf Kosten älterer, zuverlässigerer Technologien auf diesen Zug gesprungen. Wenn Sie beispielsweise die Anzahl der Wörter in einer LCG auf 3 erhöhen (viel weniger als die "nur 624" eines Mersenne-Twisters) und das oberste Wort bei jedem Durchgang ausgeben, besteht es BigCrush ( den schwierigeren Teil der TestU01-Testsuite) ), obwohl der Twister versagt hat ( PCG-Papier, Abb. 2 ). Angesichts dieser Tatsache und der schwache Beweise ich in der Lage war , zur Unterstützung der Mersenne Twister zu finden, was tat Ursache die Aufmerksamkeit auf sie über die anderen Entscheidungen zu begünstigen?
Dies ist auch nicht rein historisch. Mir wurde im Vorbeigehen gesagt, dass der Mersenne Twister in der Praxis zumindest bewährter ist als beispielsweise PCG Random . Aber sind Use-Cases so anspruchsvoll, dass sie besser funktionieren als unsere Testbatterien? Einige Googler schlagen vor, dass dies wahrscheinlich nicht der Fall ist.
Kurz gesagt, ich frage mich, wie der Mersenne Twister seinen allgemein positiven Ruf erlangt hat, sowohl im historischen als auch im sonstigen Kontext. Einerseits bin ich natürlich skeptisch gegenüber seinen Eigenschaften, andererseits ist es schwer vorstellbar, dass es sich um ein rein zufälliges Ereignis handelt.
Antworten:
MT galt einige Jahre als gut, bis sich herausstellte, dass es mit den fortgeschritteneren TestU01 BigCrush-Tests und besseren PRNGs ziemlich schlecht war.
Diese Seite listet die Mersenne-Twister-Funktionen im Detail auf:
Positiven Eigenschaften
Neutrale Eigenschaften
Negative Eigenschaften
Zusammenfassung : Mersenne Twister ist nicht mehr gut genug, aber die meisten Anwendungen und Bibliotheken sind noch nicht da.
quelle
Ich bin der Herausgeber, der das MT-Papier bereits 1998 in ACM TOMS akzeptiert hat, und ich bin auch der Designer von TestU01. Ich verwende kein MT, sondern hauptsächlich MRG32k3a, MRG31k3p und LRSR113. Um mehr über diese, über MT und über das, was es sonst noch gibt, zu erfahren, können Sie sich die folgenden Papiere ansehen:
F. Panneton, P. L'Ecuyer und M. Matsumoto, "Verbesserte Langperiodengeneratoren basierend auf linearen Rekursionen Modulo 2", ACM Transactions on Mathematical Software, 32, 1 (2006), 1-16.
P. L'Ecuyer, "Random Number Generation", Kapitel 3 des Handbook of Computational Statistics, JE Gentle, W. Haerdle und Y. Mori, Herausgeber, 2. Auflage, Springer-Verlag, 2012, 35-71 . https://link.springer.com/chapter/10.1007/978-3-642-21551-3_3
P. L'Ecuyer, D. Munger, B. Oreshkin und R. Simard, "Random Numbers for Parallel Computers: Requirements and Methods", Mathematics and Computers in Simulation, 135, (2017), 3-17. http://www.sciencedirect.com/science/article/pii/S0378475416300829?via%3Dihub
P. L'Ecuyer, "Zufallszahlengenerierung mit mehreren Streams für sequentielle und parallele Computer", lud ein erweitertes Tutorial, Proceedings of the 2015 Winter Simulation Conference, IEEE Press, 2015, 31-44.
quelle
Ähnlich wie bei Sortieralgorithmen gibt es in dieser Hinsicht kein "one size fits all" PRNG. Unterschiedliche werden für unterschiedliche Zwecke verwendet und es gibt eine Vielzahl von Designkriterien und Verwendungen. Es ist möglich, PRNGs falsch anzuwenden, z. B. für die Kryptografie, für die sie nicht entwickelt wurde. Der Wikipedia-Eintrag zu Mersenne Twister erwähnt auch, dass er nicht für "Monte-Carlo-Simulationen entwickelt wurde, die unabhängige Zufallszahlengeneratoren erfordern".
Wie bei Wikipedia vermerkt, wird dieses PRNG in der Tat in einer Vielzahl von Programmiersprachen und Anwendungen verwendet, sogar als Standard-PRNG. Es würde eine fast soziologische Analyse erfordern, um zu erklären, warum ein PRNG bevorzugt wird. Einige mögliche Faktoren, die zu diesem PRNG beitragen können:
Der Autor hat gute / starke wissenschaftliche Referenzen auf dem Gebiet und arbeitet seit Jahrzehnten in PRNGs.
Es wurde speziell entwickelt, um anderen Methoden zu dieser Zeit überlegen zu sein.
Der Autor befasst sich mit der Implementierung und deren Verfolgung und trägt auch dazu bei. Einige PRNGs sind eher theoretisch und die Autoren beschäftigen sich nicht immer mit tatsächlichen Implementierungen.
Das System wird auf einer Webseite gut unterstützt / aktualisiert.
Neue Versionen des PRNG wurden entwickelt, um mit Schwachstellen umzugehen. Es gibt keinen einzigen Mersenne-Twister-Algorithmus, sondern verschiedene Versionen und eine Reihe von Varianten, die unterschiedliche Anforderungen erfüllen.
Es wurde von einer Standard-Zufallsanalysesoftware ausgiebig analysiert / getestet und von unabhängigen Behörden genehmigt.
Es gibt einen bekannten Effekt, der mit für Websites und viele andere Kontexte gemessen werden kann, wie beispielsweise wissenschaftliche Zitate, die als "bevorzugte Bindung" bezeichnet werden und gemessen werden können. Es ist im Grunde genommen der Ort, an dem seit langem etablierte historische Quellen weitere Verwendung finden. Ein solcher Effekt könnte die PRNG-Entscheidungen im Laufe der Zeit erklären.
Mit anderen Worten, Sie fragen nach einem Phänomen der "Popularität", das mit menschlichen Entscheidungen verbunden und verbunden ist und nicht streng an bestimmte Eigenschaften gebunden ist, sondern eine Art komplexe / aufkommende Eigenschaft und Wechselwirkung zwischen verschiedenen Algorithmen, Benutzern und der Umgebung darstellt / Nutzungskontexte.
Hier ist eine solche unabhängige Analyse des Algorithmus Mersenne Twister - Ein Pseudozufallszahlengenerator und seiner Varianten von Jagannatam (15p). Der abschließende Absatz ist im Wesentlichen eine Antwort auf Ihre Frage. nur die 1 zitiert st paar Sätze:
quelle