在我的程序中,我需要重复生成随机双精度数(数百万次),并且有几个变量分布平坦,但范围不同。目前这就是我所做的:
double w, v, k;
double wmax = 0.5;
double vmax = 1.0;
std::random_device rd;
std::default_random_engine dre(rd());
std::uniform_real_distribution<double> wRand(-wmax, wmax);
std::uniform_real_distribution<double> vRand(-vmax, vmax);
std::uniform_real_distribution<double> kRand(0.0, 1.0);
w = wRand(dre);
v = vRand(dre);
k = kRand(dre);
这是一种正确的方法,还是有一个分布并从中构造所有数字会更好?我对性能问题非常谨慎,我觉得有一个分布和几个算术运算会更快。会吗?在这种情况下,随机数的比较质量如何?