0

我希望使用 Boost 生成超过 10^8 个随机数。它们必须以标准差 1 和均值 0 正态分布。这是我的 MWE:

#include <iostream>
#include <vector>

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

using namespace std;

int main()
{
    typedef boost::mt19937                     ENG;
    typedef boost::normal_distribution<double> DIST;
    typedef boost::variate_generator<ENG,DIST> GEN;

    ENG  eng;
    DIST dist(0,1);
    GEN  gen(eng,dist);

    gen.engine().seed(time(0));

    vector<double> nums;

    for(int i=0; i<500; i++)
    {
        nums.push_back(gen());
    }

    return 0;
}

在这方面我有两个问题:

  1. 我用来播种引擎的方法是否正确?还是我需要在每个数字之前播种?
  2. 我的方法有效吗?或者,还有更好的方法?

编辑请注意,代码中没有瓶颈。我只是想知道从专业角度来看我的方法是否正确

我应该说这些数字(全部)必须在之后按适当的常数进行缩放。我的计划是为此使用 for 循环。

最好的,奈尔斯。

4

0 回答 0