Grz*_*nio 5 c++ random boost gamma-distribution
在C++中获取gamma分布随机变量的最简单方法是什么?Boost似乎有这个功能,但我不清楚如何使用它.
这非常简单:
boost::mt19937 rng;
boost::gamma_distribution<> pdf(alpha);
boost::variate_generator<boost::mt19937&, boost::gamma_distribution<> >
generator(rng, pdf);
Run Code Online (Sandbox Code Playgroud)
构造随机数生成器和伽马分布,并将它们粘合在一起成为可用的生成器.现在,您可以通过调用来创建随机数generator
.
以下是在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';
}
Run Code Online (Sandbox Code Playgroud)
您的编译器可能支持也可能不支持<random>
.Boost random最近刚被修改为符合std :: syntax,但我不确定该修改是否实际上已经发布(或者仍然只是在boost主干上).