重复生成均匀随机数

Uniform random number generated was repeated

本文关键字:随机数 复生      更新时间:2023-10-16

我试图生成从0.0到1.0的100个均匀随机变量。我使用了基于时间的种子来生成它,但生成的数字在更改为另一个之前似乎重复了几次。有没有更好的方法来模拟而不重复?

输出如下:0.334560.334560.33456 0.11256 0.11256 0.112560.94092 0.94092…

Real UniformDistributionGenerator(double range_from, double range_to) {
    Real uniform_r_v = 0.0;
    unsigned seed = std::chrono::high_resolution_clock::now().time_since_epoch().count();
    std::mt19937 generator(seed);
    std::uniform_real_distribution<double> distribution(range_from, range_to);
    uniform_r_v = distribution(generator);
    return uniform_r_v;
}

最简单的解决方案:static std::mt19937 generator(seed);每个程序运行一次种子,这是应该的。