我希望使用 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;
}
在这方面我有两个问题:
- 我用来播种引擎的方法是否正确?还是我需要在每个数字之前播种?
- 我的方法有效吗?或者,还有更好的方法?
编辑请注意,代码中没有瓶颈。我只是想知道从专业角度来看我的方法是否正确
我应该说这些数字(全部)必须在之后按适当的常数进行缩放。我的计划是为此使用 for 循环。
最好的,奈尔斯。