假设我想随机选择0到30之间的数字n,其中分布是任意的,而不是统一的。每个数字具有相应的权重P(n):P(0)= 5,P(1)= 1,P(2)= 30,P(3)= 25,依此类推。如何从该集合中随机选择,以便选择数字的概率与其权重成正比?
这种随机选择甚至被称为什么?
我可以看到实现它的一种方法:
这样的东西已经在库中实现了吗? (使用Perl。)
答案 0 :(得分:6)
这实际上是一个非常受欢迎的问题,被称为加权随机选择(或有时加权随机选择)。这是关于它的a complete article。
答案 1 :(得分:1)
#!/usr/bin/perl
use strict; use warnings;
my @p = map { ($_) x int(1 + rand 50) } 0 .. 30;
my @s = @p[ map rand @p, 1 .. 10 ];
print "@s\n";