我想从正态分布中生成10000个随机数。以下行给我一次一个数字。有更快的方法来生成它们吗?也许避免循环?
std::default_random_engine generator;
std::normal_distribution<double> distribution(0.0,1.0);
double number[10000];
for (int i =0; i< 10000; i++)
number[i] = distribution(generator);
答案 0 :(得分:4)
您可以使用std::generate_n
来避免显式编写循环。
这极不太可能在速度上产生任何显着差异。你使用的随机数生成器比调用它的循环代码更能影响速度。
我一般建议使用std::mt19937
而不是std::default_random_engine
,但它不太可能大幅度提高速度(但是生成的优质随机数会变得很多更确定)。