【发布时间】:2017-10-12 20:45:30
【问题描述】:
你好! 我刚开始用 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 吗?
【问题讨论】:
-
这是一个非常奇怪的分布,你在那里计算。预期的分布是什么?
-
老实说,我在某个网站上发现了这个发行版。我只需要 [0,n] 中的大量数字。每个数字应该有相同的概率被选中。
-
这是内置的,见
uniform_int_distribution。 -
你能链接你找到的网站吗?
标签: c++ random normal-distribution mt19937