Невозможно воспроизвести точные результаты для "100-гранной головоломки" с помощью симуляции в R
Я пытаюсь повторить результаты, упомянутые здесь, используя R. Хотя я могу приблизиться к теоретическому числу, оно все еще не совсем там, и я не уверен, где я ошибаюсь.
Стратегия, которую я использую, заключается в том, чтобы бросать до тех пор, пока не встретится "a" или большее значение, и в этом случае прекратите игру и соберите свой выигрыш.
Это моделируется 1000 раз для каждого значения "а" (которое само варьируется от 1 до 100) с использованием функции репликации. Я веду записи о том, какое значение "а" привело к ожидаемому значению.
Наконец, я выбираю запись для максимального ожидаемого значения.
Чтобы привести пример:
1) 100-гранный кубик
2) a = data.frame(a = 1:100)
3) Для каждого значения я запускаю симуляцию, чтобы проверить, какое будет оценочное значение. Один пример: а = 30; бросок кубика = 23, 22, 2, 12, 38... В этом случае игрок продолжает бросок до тех пор, пока не выпадет 38, и в этот момент он останавливается (38 здесь больше, чем "а") и собирает $38 в качестве своего выигрыши. Фактическая выгода = $38 - $ 4 = $ 34
4) Шаг 3 повторяется 1000 раз (каждое значение "а" получает 1000 прогонов). Окончательное ожидаемое значение является средним значением всех этих 1000 прогонов.
5) Я получаю фрейм данных: a = data.frame(a = 1:100, ev = c(50.5, 51.6, 52... 12.2, 10.93))
из которого я вижу, что максимальное ожидаемое значение составляет 87.xyz, где xyz - десятичная часть.
Проблема, с которой я сталкиваюсь, заключается в том, что я не могу воспроизвести цифру 87,3571 в исходной ссылке (которая подкреплена теоретическим расчетом)...
Я отметил, что увеличение количества испытаний с 1000 до 10000 до 100000 приближает ожидаемое значение к значению в ссылке. Это единственный способ повысить точность или я что-то упускаю? Это похоже на ситуацию, в которой я путаюсь, пропуская тонкое различие, которое понимает только статистик...
Некоторая другая информация:
1) Я установил.seed на фиксированное число в начале функции. Это означает, что set.seed вызывается только один раз для всей функции (независимо от количества попыток).