理解随机数发生器的泊松分布

时间:2012-02-22 09:04:49

标签: c++ random poisson

我正在使用C ++ 11中提供的随机数生成器。目前,我正在使用统一分布,这应该给我一个相同的概率来获得A& A范围内的任何数字。我指定的B。

然而,我对生成泊松分布感到困惑。虽然我理解如何确定Poisson probability,但我不明白如何根据泊松分布“随机分布”一系列随机数。

例如,泊松分布的C ++ 11构造函数采用一个参数--λ,即mean of the distribution

std::tr1::poisson_distribution<double> poisson(7.0);
std::cout << poisson(eng) << std::endl;

在泊松概率问题中,这等于给定间隔期间的预期成功/发生次数。但是,我不明白它在这个例子中代表什么。什么是随机数场景中的“成功”/“发生”?

我感谢您提供的任何帮助或参考资料,以帮助我理解这一点。

1 个答案:

答案 0 :(得分:3)

泊松分布的概率是特定值出现的概率。想象一下,你想要计算每天有多少辆汽车通过某个点。这个值会在某些天会更多,但在其他日子会减少。但是,当在很长一段时间内跟踪这一情况时,平均值将开始出现,其附近的价值更频繁地发生,并且价格更远(每天0辆汽车或10倍数量)的可能性更小。 λ就是出现的意思。

当将此反映给RNG时,算法会返回随机传递的汽车数量(均匀选择)。你可以想象,平均值λ更有可能出现,极端情况最不可能出现。

以下链接有一个泊松分布的例子,显示了你获得的离散结果,以及它们各自发生的可能性:

http://www.mathworks.com/help/toolbox/stats/brn2ivz-127.html

示例实现可以针对每个值计算它发生的概率,然后基于这些值计算范围以将均匀分布转换为泊松。例如对于λ== 2,我们有13%的几率为0,27%的几率为1,有机会为27%...然后我们生成一个介于0.0和1.0之间的旧的均匀随机数。如果此数字是&lt; = 0.13则返回0.是否&lt; = 0.40返回1.是否&lt; = 0.67返回2等...