0

我已经完成了 Boost 的安装,并且(终于)在我的程序中使用了它。我想要的是能够生成

  1. 在 0 和 1 之间随机分布的数字
  2. 标准差为 1 的正态分布数

我通过以下头文件实现了这一点:

#include <boost/random/normal_distribution.hpp>
#include <boost/random/uniform_real.hpp>
#include <boost/random/mersenne_twister.hpp>
#include <boost/random/variate_generator.hpp>

boost::mt19937 rng;

boost::normal_distribution<double> nd(0.0, 1.0);
boost::variate_generator< boost::mt19937, boost::normal_distribution<double> > normal(rng, nd);

boost::uniform_real<float> ur(0.0, 1.0);
boost::variate_generator< boost::mt19937, boost::uniform_real<float> > uniform(rng, ur);

我有两个问题:

  1. 我的方法正确吗?到目前为止,我得到了想要的行为似乎是一致的,而且其他人似乎也这样做了
  2. 我需要模拟一个非常大的样本,因此我需要非常多的随机数,远远大于 10^9。有没有比我简单地调用 uniform() 和 normal() 的方法更有效的方法来实现这一点?
4

0 回答 0