C ++生成多个无循环的随机数

时间:2017-02-05 04:24:24

标签: c++ performance loops random

我想从正态分布中生成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);

1 个答案:

答案 0 :(得分:4)

您可以使用std::generate_n来避免显式编写循环。

不太可能在速度上产生任何显着差异。你使用的随机数生成器比调用它的循环代码更能影响速度。

我一般建议使用std::mt19937而不是std::default_random_engine,但它不太可能大幅度提高速度(但是生成的优质随机数会变得很多更确定)。