Как я узнаю, что это достаточно случайно? - PullRequest
13 голосов
/ 15 апреля 2010

Я написал программу на java, которая бросает кубик и записывает общее количество раз, когда каждое значение 1-6 бросается.Я катался 6 миллионов раз.Вот распределение:

#of 0's: 0
#of 1's: 1000068
#of 2's: 999375
#of 3's: 999525
#of 4's: 1001486
#of 5's: 1000059
#of 6's: 999487

(0 не вариант).

Совместимо ли это распределение со случайными бросками кубиков?Какие объективные статистические тесты могут подтвердить, что броски кубиков действительно случайны?

РЕДАКТИРОВАТЬ: вопросы были подняты по поводу приложения: игра, которую я хочу быть настолько честной, насколько это возможно разумно достичь.

Ответы [ 4 ]

5 голосов
/ 15 апреля 2010

Чтобы проверить, соответствует ли это конкретное распределение ожидаемому распределению чисел, выполненных в «честном» погружении, вам необходимо выполнить критерий хи-квадрат Пирсона .

Обратите внимание, что это все еще не докажет, что ваш алгоритм "честен", только то, что эти конкретные результаты выглядят "честно".

Чтобы проверить, является ли ваш алгоритм "честным" в целом, используйте Diehard тесты , как уже упоминали другие.

4 голосов
/ 15 апреля 2010

Если ваш генератор случайных чисел проходит тесты Диарда, это лучшее, что вы можете сделать.

Даже физический кубик не будет идеальным с 1/6 на лицо.

Увеличьте испытания на порядок, а затем повторите. Если вы получите 1/6 за каждое испытание, у вас все будет в порядке.

1 голос
/ 15 апреля 2010

Одного этого теста недостаточно для определения случайности. Не то чтобы это было абсолютно бесполезно, но «случайный» ролик для игры в кости, который выдает 1,2,3,4,5,6 и повторы, будет совершенно случайным в соответствии с этим тестом.

Еще один предлагаемый тест: выберите число, х, и каждый раз, когда он выпадет, запишите статистику того, что число последует; Вы должны увидеть четное распределение снова. Повторите для всех шести значений х. Если он проходит этот тест, он, вероятно, достаточно случайный, чтобы использоваться в качестве ролика для игры в кости.

0 голосов
/ 15 апреля 2010

Вероятность того, что 6 000 000 бросков костей окажутся ровно в 1 000 000 результатов каждого, близка к 0. До тех пор, пока сумма, если результаты правильные, и что дисперсия (ошибка) составляет разница с ожидаемым результатом возрастает до 0 (относительно), когда количество испытаний увеличивается, тогда ваша случайная функция не ошибается.

Вы можете либо доказать это математически, либо протестировав случайную функцию с большими и большими пробными последовательностями, чтобы убедиться, что она сходится.

Для повторного количества тестов сумма для каждого результата должна приближаться к распределению Гаусса. Например. каждый результат 1-6 должен находиться в пределах нормального распределения с центром около 1 000 000 с дисперсией, обратно пропорциональной числу бросков костей.

Другие тесты, тесты Diehard, проверяют, что фактическая последовательность бросков играющих в кости случайна сама по себе, а не то, что результат 6 000 000 бросков, например, составляет 100 000 последовательных 1, затем 100 000 2 и и так далее и, наконец, некоторые случайные последовательности.

...