аватар question@mail.ru · 01.01.1970 03:00

Как выбрать одно из значений с определенной вероятностью?

Пример. Катя получила 10 баллов, а Коля — 20 баллов. Значит в одном случае из трех победит Катя, а в двух из трех — Коля.

Надо случайным образом выбрать победителя лотереи, учитывая их вероятности на выигрыш.

Какой формулой это расчитывается (Нужна универсальная формула для любого числа участников лотереи)?

P.S. Язык Python.

аватар answer@mail.ru · 01.01.1970 03:00

Примем за условие:

Игрок 1 - вероятность выигрыша 10
Игрок 2 - вероятность выигрыша 20

В простом случае, нам надо сложить все вероятности выигрыша вместе (то есть 10 + 20 в примере) и потом сгенерировать случайное число в диапазон от 0 до суммы вероятностей (до 30). Далее, от получившегося случайного числа, отнимать вероятности выигрыша по очереди (например, идем сверху вниз), и как только разность станет меньше 0 - вы нашли искомого Игрока (победителя).

Итак, пример:

10 + 20 = 30 // сумма вероятностейRandom(30) = 26.67 // случайное число26.67 - 10 = 16.67 // вычитаем вероятность 1 игрока16.67 - 20 = -3.33 // вычитаем вероятность 2 игрока// Результат стал меньше 0. Значит 2-й игрок - искомый победитель

В английской среде алгоритм имеет название (и часто используется в генетических алгоритмах). Такое название дано в связи с тем, что можно представить все вероятности как сектора рулеточного колеса (на рисунке они приведены к процентам от суммы), и случайным образом выбирать положение на колесе, определяя тем самым ""выигравший"" сектор.

Последние

Похожие