为什么我应该这样做:
#include <boost/random.hpp>
#include <ctime>
using namespace boost;
double SampleNormal (double mean, double sigma)
{
static mt19937 rng(static_cast<unsigned> (std::time(0)));
normal_distribution<double> norm_dist(mean, sigma);
variate_generator<mt19937&, normal_distribution<double> > normal_sampler(rng, norm_dist);
return normal_sampler();
}
在我看来,代码:
#include <boost/random.hpp>
#include <ctime>
using namespace boost;
double SampleNormal (double mean, double sigma)
{
static mt19937 rng(static_cast<unsigned> (std::time(0)));
normal_distribution<double> norm_dist(mean, sigma);
return norm_dist(rng);
}
应该也能正常工作。
为什么使用variate_generator?它是否比第二个示例中所做的更多?
一点背景知识:我正在运行 100 个模拟实例,其中涉及发生随机过程的循环的 10^7 次迭代。这意味着我需要非常好的随机数。