C++生成多个随机数而不循环

C++ generate multiple random numbers without loop

本文关键字:循环 随机数 C++      更新时间:2023-10-16

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

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

不过,这不可能在速度上产生任何显着差异。速度受您使用的随机数生成器的影响要比调用它的循环代码的影响大得多。

我通常建议使用std::mt19937而不是std::default_random_engine,但它不太可能大幅提高速度(但生成的随机数质量变得更加确定(。