Mersenne Twister jest powszechnie uważany za dobry. Heck, źródło CPython mówi, że „jest jednym z najdokładniej przetestowanych generatorów na rynku”. Ale co to znaczy? Gdy poproszono mnie o podanie właściwości tego generatora, większość tego, co mogę zaoferować, jest zła:
- Jest masywny i nieelastyczny (np. Brak wyszukiwania lub wiele strumieni),
- Nie przejdzie standardowych testów statystycznych pomimo ogromnego rozmiaru stanu,
- Ma poważne problemy w okolicach 0, co sugeruje, że losuje się dość słabo,
- Nie jest szybki
i tak dalej. W porównaniu z prostymi RNG, takimi jak XorShift *, jest to również beznadziejnie skomplikowane.
Szukałem więc informacji o tym, dlaczego uważano to za dobre. Oryginalny artykuł zawiera wiele komentarzy na temat okresu „super astronomicznego” i 623-wymiarowej równomierności
Spośród wielu znanych miar testy oparte na wyższej jednorodności wymiarowej, takie jak test spektralny (por. Knuth [1981]) i test rozkładu k, opisane poniżej, są uważane za najsilniejsze.
Ale dla tej właściwości generator jest bity licznikiem o wystarczającej długości! Nie powoduje to komentarza do lokalnych dystrybucji, na których tak naprawdę zależy Ci w generatorze (chociaż „lokalny” może oznaczać różne rzeczy). Nawet CSPRNG nie przejmują się tak dużymi okresami, ponieważ po prostu nie jest to ważne.
W gazecie jest dużo matematyki, ale o ile wiem niewiele, w rzeczywistości dotyczy jakości losowości. Prawie każda wzmianka o tym szybko wraca do tych oryginalnych, w większości bezużytecznych twierdzeń.
Wygląda na to, że ludzie wskoczyli na ten modę kosztem starszych, bardziej niezawodnych technologii. Na przykład, jeśli po prostu zwiększysz liczbę słów w LCG do 3 (znacznie mniej niż „tylko 624” Mersenne Twister) i wypiszesz górne słowo za każdym razem, przekazuje BigCrush ( trudniejsza część zestawu testów TestU01 ), mimo że Twister go zawodzi ( papier PCG, ryc. 2 ). Biorąc to pod uwagę, a słabe dowody udało mi się znaleźć na poparcie Mersenne Twister, co zrobił przyczyna uwagę faworyzować ją na innych wyborów?
To też nie jest czysto historyczne. Powiedziano mi mimochodem, że Mersenne Twister jest przynajmniej bardziej sprawdzony w praktyce niż, powiedzmy, losowy PCG . Ale czy przypadki użycia są tak wymagające, aby mogły być lepsze niż nasze zestawy testów? Niektórzy Googling sugerują, że prawdopodobnie nie.
Krótko mówiąc, zastanawiam się, w jaki sposób Mersenne Twister zyskał swoją powszechną pozytywną reputację, zarówno w kontekście historycznym, jak i nie tylko. Z jednej strony jestem oczywiście sceptyczny co do jego zalet, ale z drugiej strony trudno sobie wyobrazić, że było to całkowicie przypadkowe zdarzenie.