Предположим, я хочу случайным образом выбрать число n между 0 и 30, где распределение произвольное и неравномерное. Каждое число имеет соответствующий вес P (n): P (0) = 5, P (1) = 1, P (2) = 30, P (3) = 25 и т. Д. И т. Д. Как сделать случайный выбор из этого набора, так что вероятность выбора числа пропорциональна его весу?Вероятностный выбор из набора
Что такое случайный выбор, даже называемый?
можно увидеть один из способов его реализации:
- Сделать справочной таблицы V, где V (п) = V (п-1) + P (п); с базовым регистром V (0) = P (0).
- Генерация случайных чисел X с равномерным распределением между 0 и максимальным значением V.
- Найти наименьшее значение п, что V (п)> X.
Это что-то вроде этого уже реализован в библиотеке? (Использование Perl.)
Ах! Эти ключевые слова - именно то, что мне нужно. Благодарю. – PBJ
Мне удалось найти существующий модуль CPAN для этого (хотя он не слишком популярен): List :: Util :: WeightedChoice http://search.cpan.org/~dsadinoff/List-Util-WeightedChoice-0.06/ Библиотека/Список/Util/WeightedChoice.pm – PBJ