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;
}
この点に関して 2 つの質問があります。
- エンジンをシードするために使用しているアプローチは正しいですか? または、各番号の前にシードする必要がありますか?
- 私の方法は効率的ですか?それとももっと良い方法がありますか?
EDITコード自体にボトルネックがないことに注意してください。私のアプローチがプロの観点から正しいかどうか疑問に思っています
後で、数値 (すべて) を適切な定数でスケーリングする必要があると言わざるを得ません。私の計画は、これに for ループを使用することです。
最高です、ナイルズ。