Как проверить PRNG? - PullRequest
       31

Как проверить PRNG?

4 голосов
/ 03 декабря 2010

В последнее время я реализовал MersenneTwister для 64-битных integer (или long).Есть ли руководство или примеры того, как проверить PRNG, чтобы я мог знать, является ли моя реализация достаточно хорошим решением?Меня особенно интересует, как проверить, имеет ли моя реализация достаточно хорошее равномерное распределение.

Чем точнее это связано с MersenneTwister, тем лучше.

Ответы [ 4 ]

12 голосов
/ 04 декабря 2010

Вам не нужно тестировать алгоритм Мерсенна Твистера - это делается много раз людьми, которые действительно знают, что они делают - вам нужно только проверить, правильно ли вы реализован алгоритм.

Вы можете перейти на веб-сайт Mersenne Twister и получить их результаты теста . Если вы производите ту же последовательность выводов, что и они, вы, вероятно, правильно реализовали алгоритм.

Обратите внимание, что сайт MT имеет ссылку специально для 64-битных машин и различные тестовые выходы для 32- и 64-битных версий.

7 голосов
/ 03 декабря 2010

Стандартной батареей испытаний для PRNG является Diehard Tests .

2 голосов
/ 03 декабря 2010

Самый простой подход (если это действительно универсальный MT) - это сравнить его с заведомо хорошей библиотекой MT с тем же начальным числом.

1 голос
/ 22 июня 2011

Алоха!

Как сказал кто-то другой - используйте известные тестовые векторы ответов для своих алгоритмов.Если вы соответствуете тестовым векторам, то можете быть уверены, что ваш генератор работает.

Если вы действительно хотите проверить генератор.Используйте тесты DIEHARD ++, реализованные инструментом Dieharder:

http://www.phy.duke.edu/~rgb/General/dieharder.php

...