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.