在C++中獲取伽馬分佈隨機變量的最簡單方法是什麼? Boost似乎有這個功能,但我不清楚如何使用它。C++中的Gamma分佈隨機變量
5
A
回答
7
這是非常簡單的:
boost::mt19937 rng;
boost::gamma_distribution<> pdf(alpha);
boost::variate_generator<boost::mt19937&, boost::gamma_distribution<> >
generator(rng, pdf);
一起構造一個隨機數發生器和gamma distribution和膠水他們到一個可用的發電機。現在您可以通過調用generator
來創建隨機數字。
1
看起來像Gamma Distribution in Boost有一些代碼將做你想做的。您可能缺少的位是boost::variate_generator
。
6
這裏是你如何做到這一點在C++ 11:
#include <random>
#include <iostream>
int main()
{
typedef std::mt19937 G;
typedef std::gamma_distribution<> D;
G g; // seed if you want with integral argument
double k = .5; // http://en.wikipedia.org/wiki/Gamma_distribution
double theta = 2.0;
D d(k, theta);
std::cout << d(g) << '\n';
}
你的編譯器可能會或可能還不支持<random>
。 Boost隨機最近剛剛被修改爲符合std ::語法,但我不確定該修改是否已經實際發佈(或者仍然只是在boost主幹上)。
相關問題
- 1. Gamma分佈
- 2. 分配隨機數變量
- 3. 在Python中分佈隨機變量的概率計算
- 4. 用R中的雙變量伽馬分佈生成隨機數
- 5. 近似R中二項式隨機變量之和的分佈
- 6. Marsaglia在C++中的隨機變量
- 7. Objective-C變化的變量隨機值
- 8. 如何繪製ggplot2中的Gamma分佈
- 9. 在Bash中隨機分佈
- 10. 如何更改SystemVerilog隨機變量的概率分佈?
- 11. 隨機變量來自scipy的傾斜分佈
- 12. 分配變量的onclick隨機行動
- 13. C++向量隨機隨機洗牌的一部分
- 14. 爲什麼這個隨機變量沒有均勻分佈?
- 15. 隨機多變量
- 16. 施加一個隨機變量隨機
- 17. 隨機均勻分佈
- 18. 隨機均勻分佈
- 19. 截斷SciPy隨機分佈
- 20. Matlab中的變量分佈
- 21. 在C中生成正態分佈隨機值的算法?
- 22. 產生從用C數正態分佈的隨機數/ C++
- 23. 從C++中概率分佈向量生成隨機數發生器
- 24. Jmeter - 隨機變量集
- 25. 隨機生成變量名?
- 26. 隨機更改stringbuilder變量
- 27. Jmeter動態隨機變量
- 28. 隨機變量邏輯
- 29. 隨機變量結果
- 30. PHP隨機變量名稱
測試版呢? – pyCthon 2011-12-07 03:56:37
@stonybrooknick不幸的是,[Boost似乎沒有它](http://www.boost.org/doc/libs/1_46_1/doc/html/boost_random/reference.html#boost_random.reference.distributions),但它一旦你看看其他發行版是如何實現的以及PDF是如何定義的,就不應該太難實現。 – 2011-12-07 07:26:38
@stonybrooknick:通過「測試版」,您可能是一個比例參數或比率參數。在第一種情況下,將變量乘以beta,否則將它們分開。 – 2012-01-08 15:34:11