2012-02-22 57 views
5

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

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

例如,C++ 11构造为泊松分布有一个参数 - λ,它是mean of the distribution

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

在泊松概率问题,这是等于成功的期望数目/在给定的时间间隔内发生。但是,我不明白它在这种情况下代表什么。什么是随机数字场景中的“成功”/“发生”?

我很感激任何帮助或参考资料,我可以帮助我理解这一点。

+0

这里的一部分问题可能是我不完全理解一个泊松分配。我的统计/概率文本讨论确定泊松概率,但没有提供有关在泊松分布内生成数字的任何内容。我目前没有真正的应用程序..我真的只是好奇这是如何工作的。 – BSchlinker 2012-02-22 09:24:35

+1

示例实现可以为每个值计算出现概率,然后根据这些值计算范围以将均匀分布转换为泊松。例如为&lambda; == 2我们有13%的机会0,27%的机会1,27%的机会2 ...然后我们生成一个很好的旧的统一的随机数在0.0和1.0之间。如果这个数字<= 0.13返回0.是否<= 0.40返回1.是否<= 0.67返回2等... – oddstar 2012-02-22 10:08:30

回答

3

泊松分布的概率是发生特定值的概率。想象一下,你想要计算每天有多少车经过某个点。这个价值会有更多的日子,但在其他日子会更少。但是,如果在一段时间内追踪到这一点,平均值就会开始出现,其附近的值会更频繁地出现,而更远的值(每天0辆或十倍的车)则不太可能。 &拉姆达;那是否意味着出现了。

当将此反映到RNG中时,该算法会返回您在随机日期过后通过的汽车数量(统一选择)。正如你可以想象的平均值&lambda;更有可能出现,极端情况最不可能出现。

下面链路具有分布泊松具有的一个例子,示出了您获得离散的结果,并且它们中的每机会具有发生的:

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

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

+0

好的 - 这与我的预期相似。但是,什么决定了输出数字的“范围”?例如,如果平均值是75,我们可以有两个数字,例如50和150,或者74和76.这两个平均值都是75,但是50和150之间的范围要大得多。另外,什么决定了需要多少样品才能开始出现? – BSchlinker 2012-02-22 09:40:27

+0

50和150每个人的发生概率比74和76低得多。虽然他们的范围的平均值是75,但你应该自己看看数字以及它们与平均值的关系。低到他们在实验中发生的机会有多高? 50辆汽车每天通过的机会有多高,或150辆,而74辆或76辆汽车通过的机会有多高。不要混淆平均值和平均值。平均值是发生在所有结果“中间”的数字,而不是所有产出的平均值。 – oddstar 2012-02-22 09:55:33

+0

关于你需要多少个样本才能出现平均值,这取决于平均值,因为这是一个离散分布。例如。如果你的平均值是2,那么它会比平均值为1050(RNG返回1050的机率为1.2%)快得多(27%的机率RNG返回2)。用&lambda; 75,新出现的概率约为4%。 – oddstar 2012-02-22 09:55:46