gpt4 book ai didi

c++ - mt19937 和正态分布

转载 作者:行者123 更新时间:2023-11-27 22:45:09 25 4
gpt4 key购买 nike

你好!我刚开始用 C++ 编写代码,我不确定如何正确使用随机数生成器。例如,我需要 [0,30000] 范围内的数字,如何确保我不会只从我的范围内获得小数字。我的功能:

std::random_device rd;
std::mt19937 rng(rd());
int myRand(int i) {
std::normal_distribution<double> distribution(30, 1500);
double temp=distribution(rng);
if(temp<0){
temp*=(-1);
}
return (int) std::round(temp)%i;
}

你介意帮我正确配置 normal_distribution 吗?

最佳答案

术语“正态分布”并不意味着“正则分布”。这意味着 normal distribution , 由数学定义。这不是你想要的。

您正在寻找的是 uniform_real_distribution , 它吐出给定范围内的 float 。但是,它仅在半开范围内执行此操作。

std::uniform_real_distribution<double> distribution(0, 30000);
double temp=distribution(rng);

这可能返回 0,但永远不会返回 30000。

如果您想要一个封闭范围内的整数,您可以使用uniform_int_distribution

关于c++ - mt19937 和正态分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43956220/

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