Математическая ошибка в задаче про кости

Добрый день!

В задаче про кости, решаемой в первой половине курса по объектам, есть ошибка из области статистики / теории вероятностей.
Бросок двух костей имитируется с помощью функции keks.throwDice(rules.diceNumber, rules.diceNumber * 6). Случайная величина, описываемая данной функцией, имеет дискретное равномерное распределение и хорошо подходит для описания результата бросания одной кости. Однако когда мы бросаем несколько костей, распределение нашей случайной величины перестает быть равномерным и (по мере роста костей) приближается к нормальному.
Если говорить проще, когда мы бросаем одну кость, мы с равной вероятностью можем получить любое из значений от одного до шести. Когда мы бросаем две кости, семерка будет выпадать гораздо чаще, чем двойка, что легко проверить на опыте.
Поэтому для правильного моделирования броска костей вместо функции keks.throwDice(rules.diceNumber, rules.diceNumber * 6) надо использовать цикл суммирующий значения
keks.throwDice(1, 6):
for (var i = 1; i <= rules.diceNumber; i++) {
points += keks.throwDice(1, 6);
}

.

3 лайка

Здравствуйте! Спасибо вам большое за такое подробное объяснение и вашу внимательность!
Мы знаем, что в курсе используется равномерное распределение.
В самом курсе важнее всего — научиться работать с объектами, понять, как они устроены. Остальное — немного второстепенно. Мы планируем в будущем поправить это и улучшить функцию с генерацией числа.
Воспользуемся вашим советом, спасибо! :slight_smile:

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

1 лайк