![](/img/trans.png)
[英]Random Number Generator - Histogram Construction (Poisson Distribution and Counting Variables)
[英]Poisson random variables with QuantLib
您好,有人可以告訴我QuantLib中是否有一個用於Poisson分布隨機變量的隨機數生成器嗎?如果是,我在哪里可以找到此代碼?我正在嘗試模擬跳轉擴散過程,需要時間步長之間的跳轉數(即,每個時間間隔[t_(i-1); t_i [。是否可以直接在QuantLib中執行此操作,還是需要使用boost庫?預先感謝!
ps還是建議通過生成指數分布的數字來使用實際的跳躍到達時間?
是否模擬跳躍時間或跳躍密度取決於編寫擴散循環的方式。 恕我直言,模擬密度更干凈,因為它需要更少的狀態才能通過模擬進行。
我不知道您是否會發現已經用Boost或QuantLib編寫的內容。 但是,如果您已經具有統一的RNG,則對泊松分布進行采樣實際上非常簡單。 例如(偽代碼):
p = exp(-lambda);
F = p; % cumulative distribution function
N = 0;
U = rand();
while (U > F)
N = N + 1;
p = p*lambda/N;
F = F + p;
end
return N;
這基於逆變換采樣 。 還有其他幾種技術。
當前在QuantLib中獲得的最接近的是InverseCumulativeRng類模板以及InverseCumulativePoisson類。 就像是
MersenneTwisterUniformRng unifMt(seed);
InverseCumulativePoisson f(lambda);
InverseCumulativeRng<MersenneTwisterUniformRng, InverseCumulativePoisson> rng(unifMt, f);
將為您提供泊松發生器。 請注意,它將以雙精度值而不是整數返回樣本:它們將是整數,但以錯誤的類型表示。
同樣,由於某種原因,InverseCumulativeRng似乎不提供采用該函數的構造函數。 奇怪的是,我們忽略了這一點……無論如何,您必須編輯<ql / math / randomnumbers / inversecumulativerng.hpp>並將其添加; 完成后,請將補丁發送到QuantLib郵件列表,然后將其添加到存儲庫中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.