Определение сходства между двумя генераторами случайных чисел - PullRequest
5 голосов
/ 02 ноября 2010

Предположим, что у меня есть два генератора случайных чисел RNG-A и RNG-B, такие что:

  • Они оба генерируют случайные, бесконечные числа с плавающей точкой при вызове
  • Я могу повторно вызывать генераторы и генерировать столько случайных чисел, сколько мне нравится
  • Сгенерированные случайные числа независимы и одинаково распределены (т. Е. Выходные данные ГСЧ не зависят от всего, что они ранее произвели)
  • Я не могу гарантировать что-либо еще о форме распределения

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

Каков наилучший алгоритм для этого?

Ответы [ 4 ]

3 голосов
/ 02 ноября 2010

Я думаю, вы найдете свои ответы здесь .

Выдержки:

Тестирование генераторов случайных чисел
Удовлетворяют ли наблюдаемые данные определенному распределению?
• тест хи-квадрат
• тест Колмогорова-Смирнова
• Последовательный корреляционный тест
• Двухуровневые тесты
• K-дистрибутив
• Серийный тест
• Спектральный тест
.....

Другой раздел:

Последовательный корреляционный тест
• Проверьте, зависят ли 2 случайные величины
- их ковариация ненулевая?
- если так, зависим. обратное неверно.

НТН!

2 голосов
/ 02 ноября 2010

В рандомизированных алгоритмах основное внимание уделяется среднему значению и дисперсии, также важны режим и некоторые другие факторы, но вы можете сгенерировать слишком много чисел и сравнить их среднее значение и дисперсию и проверить их сходство. Также вы можете найти их связь с другими функциями (например, функцией Гаусса). но самый известный тест для вашего случая:

Также вы можете использовать критерий хи-квадрат , если хотите иметь конечные числа (например, сгенерированное число % большое простое число )

0 голосов
/ 03 ноября 2010

Когда вы говорите, сравните два распределения, не очень понятно, насколько подробный ответ вы хотите.Например, рассмотрим эти две последовательности:

RNG-A: 1111100000
RNG-B: 1010101010

Поскольку средние значения и дисперсии идентичны, он пройдет тест Колмогорова-Смирнова с плавающими цветами.Тем не менее, очевидно , что RNG-A и RNG-B генерируют последовательности с различными характеристиками.В зависимости от вашей ситуации это может быть или не быть проблемой.Если вы знаете, какие риски существуют, вы можете принять обоснованное решение.

Если вы действительно хотите убедиться, что генераторы идентичны, взгляните на ссылку, приведенную в ответе Велисария.Однако это сравнивает ГСЧ с известным распределением.В вашем случае, вы не знаете ни один дистрибутив.Хотя я полагаю, что вы могли бы смоделировать RNG-A достаточное количество раз в качестве приблизительного значения, чтобы приступить к работе.

Еще одна полезная вещь, которую стоит рассмотреть, - это тесты Диарда.Смотрите ответы на этот вопрос в stats.SE.

0 голосов
/ 02 ноября 2010

Поскольку вы не можете сделать заявление о каком-либо из этих распределений, вам может потребоваться непараметрический тест для сравнения (неизвестных) распределений.Вы можете использовать тест KS, но когда вы смотрите на приложения, смотрите непараметрическую статистику.

...