gpt4 book ai didi

c++ - 生成不同范围内的随机 double

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:27:39 25 4
gpt4 key购买 nike

在我的程序中,我需要重复(数百万次)生成随机 double ,并且有几个变量具有平坦分布,但范围不同。目前这就是我所做的:

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);

这是一种正确的方法,还是采用一种分布并从中构建所有数字更好?我对性能问题非常谨慎,我觉得有一个分布和一些算术运算会更快。会吗?这种情况下随机数的比较质量如何?

最佳答案

我的建议是使用具有三个算术运算的单一分布来适本地缩放它们。它将使用更少的内存并且算术运算将很快。

但是您的整体性能将更多地取决于您如何构建循环并最大限度地减少分支预测错误。 See this question

关于c++ - 生成不同范围内的随机 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16726114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com