Войти на сайт

Авторизация, ждите ...
×

ТЕМА: "Честная" вероятность

"Честная" вероятность 3 года 11 мес. назад #116417

  • Alx_Yago
  • Alx_Yago аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1137
  • Спасибо получено: 2156
  • 1 место в Обучающем конкурсеПаладинПроект года 3 место3 местоПроект года 1 местоПроект месяца 1 местоУчитель3 место в Обучающем конкурсеРазработчикОратор
Элементарную вещь расскажу, наверное, многие знают. Но в одной теме недавно зашла речь о генераторе случайных чисел в мейкере, и о том, что он может быть «нечестным». Не залезая в код мейкера, просто расскажу, как может на самом деле работать вероятность, и как можно сделать её более «честной».

Итак, предположим, у нас есть событие, которое должно наступать с вероятностью 1/3, то есть, мы ожидаем, что примерно один раз из трёх попыток, это событие будет происходить. При этом нас будет напрягать, если мы делаем вот уже шестую попытку, а событие так и не произошло, либо случается вот уже четвёртый раз подряд. Тем не менее, при действительно случайном распределении такое возможно.

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

1.png


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

Подобного можно избежать, если использовать чуть более сложную модель наступления события. Вместо проверки: «если случайное число от 1 до 3 равно 3, то событие наступает», мы сделаем так: «событие наступает через 1-5 попыток». Это даст ту же вероятность в 1/3, однако сделает распределение более равномерным.

В программе это будет выглядеть, например, так:

2.png


Но даже в этом случае возможны ситуации, когда событие будет повторяться по многу раз подряд, либо происходить слишком редко (да, вероятность эта будет гораздо меньше, но всё равно может случиться). Для этого код можно ещё усложнить, сделав невозможным повтор события больше двух раз подряд, а заодно сделаем невозможным и возникновение подряд больших промежутков между событиями:

3.png


Вот для примера ряд случайных промежутков и то, как распределились в нём события:

1-2.png
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy, AnnTenna, poca, Phileas, WhitePaper
Время создания страницы: 0.181 секунд