Как узнать, достаточно ли это случайное число?
Я написал программу в 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 не был вариантом.)
Является ли это распределение согласованным со случайными бросками в кости?
Какие объективные статистические тесты могут подтвердить, что броски в кости действительно достаточно случайны?
EDIT: были подняты вопросы по поводу приложения: игра, в которой я хочу быть настолько справедливым, насколько это возможно.
Ответы
Ответ 1
Чтобы проверить, соответствует ли это конкретное распределение ожидаемому распределению чисел, свернутых с "справедливым" погружением, вам необходимо выполнить Pearson Chi-square тест.
Обратите внимание, что это все равно не докажет, что ваш алгоритм "справедлив", только то, что эти конкретные результаты выглядят "справедливыми".
Чтобы проверить, является ли ваш алгоритм "справедливым" в целом, используйте тесты Diehard, как упомянули другие.
Ответ 2
Если ваш генератор случайных чисел проходит тесты Diehard, это лучшее, что вы можете сделать.
Даже физическая смерть не будет идеальной с 1/6 на лицо.
Увеличьте испытания на порядок, затем сделайте это снова. Если вы получите 1/6 за каждое испытание, все будет в порядке.
Ответ 3
Только этого теста недостаточно для определения случайности. Не то, чтобы это было совершенно бесполезно, но "случайный" кубический ролик, который выводит 1,2,3,4,5,6, и повторы были бы совершенно случайными в соответствии с этим тестом.
Еще один предложенный тест: выберите число, x и каждый раз, когда он свернут, запишите статистику того, какой номер будет дальше; вы должны увидеть равномерное распределение снова. Повторите все шесть значений x. Если он пройдет этот тест, он, вероятно, будет достаточно случайным для использования в роли кубика кости.
Ответ 4
Вероятность того, что 6'000'000 бросков кубиков закончится точно в 1 000 000 результатов каждого, близка к 0. Пока сумма, если результаты правильные, и что дисперсия (ошибка) разница с ожидаемым результатом идет к 0 (относительно), когда число испытаний увеличивается, тогда ваша случайная функция не является неправильной.
Вы можете либо доказать это математически, либо путем тестирования случайной функции с большими и большими пробными последовательностями, чтобы увидеть, что она сходится.
Для повторного количества тестов сумма для каждого результата должна аппроксимировать распределение Гаусса. Например. каждый результат 1-6 должен находиться в пределах нормального распределения, сосредоточенного около 1 000 000 с дисперсией, которая обратно пропорциональна количеству рулонов кости.
Другие тесты, тесты Дихарда, показывают, что фактическая последовательность бросков кости является случайной по себе, а не то, что результат 6000 000 рулонов, например, составляет 100 000 последовательных 1, затем 100 000 2 и так и, наконец, некоторые случайные последовательности.