Невозможно воспроизвести точные результаты для "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 вызывается только один раз для всей функции (независимо от количества попыток).

0 ответов

Другие вопросы по тегам