Предположим, я хочу случайным образом выбрать число n от 0 до 30, где распределение является произвольным, а не равномерным. Каждое число имеет соответствующий вес P (n): P (0) = 5, P (1) = 1, P (2) = 30, P (3) = 25 и так далее и тому подобное. Как сделать случайный выбор из этого набора, чтобы вероятность выбора числа была пропорциональна его весу?
Как вообще называется этот тип случайного выбора?
Я вижу один из способов его реализации:
- Составить справочную таблицу V, где V (n) = V (n-1) + P (n); с базовым регистром V (0) = P (0).
- Генерирует случайное число X с равномерным распределением между 0 и максимальным значением V.
- Найдите наименьшее значение n такое, что V (n)> X.
Что-то подобное уже реализовано в библиотеке? (С использованием Perl.)