У меня есть набор значений, и связанный с ним процент для каждого:отбора на основе процентного взвешивания
: с 70% вероятностью
б: 20% шанс
C: 10% шанс
Я хочу выбрать значение (a, b, c) на основе процентного шанса.
Как подойти к этому?
моя попытка до сих пор выглядит следующим образом:
r = random.random()
if r <= .7:
return a
elif r <= .9:
return b
else:
return c
Я застрял придумывают алгоритма справиться с этим. Как мне подойти к этому, чтобы он мог обрабатывать более крупные наборы значений, не связывая друг с другом потоки if-else.
(любое объяснение или ответы в псевдокоде штраф реализация питона или C# будет особенно полезно.)
Я имел эту проблему и в конечном итоге создание библиотеки: https://github.com/kinetiq/Ether.WeightedSelector –
Очень хорошая и простая реализация в C# здесь: HTTP://www.vcskicks.com/random-element.php – Roboblob