我试图从0.0到1.0生成100个均匀随机变量。 我使用基于时间的种子来生成它,但生成的数字似乎重复了一些,然后再改为另一个。有没有更好的方式来模拟而不重复?
输出如下: 0.33456,0.33456,0.33456,0.11256,0.11256,0.11256,0.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;
}
答案 0 :(得分:0)
最简单的解决方案:static std::mt19937 generator(seed);
每个程序运行一次播种,应该是。