2012-02-22 49 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