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

BSc*_*ker 5 c++ random poisson

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

但是,我对生成泊松分布感到困惑.虽然我理解如何确定泊松概率,但我不明白如何根据泊松分布"随机分布"一系列随机数.

例如,泊松分布的C++ 11构造函数采用一个参数--λ,即分布均值

std::tr1::poisson_distribution<double> poisson(7.0);
std::cout << poisson(eng) << std::endl;
Run Code Online (Sandbox Code Playgroud)

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

我感谢任何帮助或参考资料,我可以用它来帮助我理解这一点.

小智 3

泊松分布的概率是特定值出现的机会。想象一下,您想要计算每天有多少辆车经过某个点。该值有时会较大,但有时会较小。但是,当在很长一段时间内跟踪这一情况时,平均值就会开始出现,其附近的值出现的频率更高,而距离较远的值(每天 0 辆车或十倍的数量)出现的可能性较小。λ 是出现的意思。

当将此反映给 RNG 时,算法将返回随机一天通过的汽车数量(统一选择)。正如您可以想象的那样,平均值 λ 更有可能出现,而极值则最不可能出现。

以下链接提供了泊松分布的示例,显示了您获得的离散结果以及每个结果发生的机会:

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

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