哈罗在那里!我刚刚开始用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吗?
发布于 2017-05-14 02:01:29
术语“正态分布”并不意味着“正态分布”。按照数学的定义,它的意思是normal distribution。这不是你想要的。
你要找的是一个uniform_real_distribution,它在给定的范围内输出浮点数。但是,它只在半开放的范围内执行此操作。
std::uniform_real_distribution<double> distribution(0, 30000);
double temp=distribution(rng);这可能会返回30000,但永远不会返回0。
如果你想要一个封闭范围内的整数,你可以使用uniform_int_distribution。
https://stackoverflow.com/questions/43956220
复制相似问题