Мерсенн Твістер вважається хорошим. Хек, джерело CPython каже, що це "один з найбільш широко перевірених генераторів, що існують". Але що це означає? На запитання перерахувати властивості цього генератора, більшість із того, що я можу запропонувати, є поганим:
- Він масивний і негнучкий (наприклад, немає шукаючих чи декількох потоків),
- Він не дає стандартних статистичних випробувань, незважаючи на великі розміри штату,
- У нього є серйозні проблеми близько 0, що дозволяє припустити, що він рандомізує себе досить погано,
- Це навряд чи швидко
і так далі. Порівняно з простими RNG, такими як XorShift *, це також безнадійно складне.
Тому я шукав деяку інформацію про те, чому це колись вважалося гарним. Оригінальний документ містить багато коментарів щодо "суперастрономічного" періоду та 623-мірного рівнорозподілу, кажучи
Серед багатьох відомих заходів випробування, засновані на більш вимірній рівномірності, такі як спектральний тест (cf, Knuth [1981]) і k-тест на розподіл, описаний нижче, вважаються найбільш сильними.
Але, для цієї властивості генератор б'ється лічильником достатньої довжини! Це не дає коментарів щодо локальних дистрибутивів, про що ви насправді дбаєте в генераторі (хоча "локальний" може означати різні речі). І навіть CSPRNG не піклуються про такі великі періоди, оскільки це просто не віддалено важливо.
У статті багато математики, але, наскільки я можу сказати мало, це насправді про якість випадковості. Практично кожна згадка про це швидко переходить до цих оригінальних, багато в чому марних претензій.
Схоже, люди стрибнули на цю смугу за рахунок старих, надійніших технологій. Наприклад, якщо ви просто збільшите кількість слів у LCG до 3 (набагато менше, ніж "лише 624" Mersenne Twister) і виводите верхнє слово кожного проходу, воно передає BigCrush ( важча частина тестового набору TestU01 ), незважаючи на те, що Twister цього не вийшов ( папір PCG, мал. 2 ). З огляду на це, а слабкі докази того, мені вдалося знайти в підтримку Вихор Мерсенна, то , що було причиною уваги на користь його на інші варіанти?
Це теж не суто історично. Мені попутно сказали, що Mersenne Twister принаймні більше доведений на практиці, ніж, скажімо, PCG випадковий . Але чи такі випадки використання настільки вибагливі, що вони можуть зробити краще, ніж наші батареї тестів? Деякі з Googling припускають, що їх, мабуть, немає.
Коротше кажучи, мені цікаво, як Мерсенн Твістер здобув свою широку позитивну репутацію, як в історичному контексті, так і в іншому випадку. З одного боку я очевидно скептично ставлюсь до його якостей, але з іншого важко уявити, що це було цілком випадковим явищем.