首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mt19937和正态分布

mt19937和正态分布
EN

Stack Overflow用户
提问于 2017-05-14 01:50:44
回答 1查看 509关注 0票数 0

哈罗在那里!我刚刚开始用C++编写代码,我不确定如何正确使用随机数生成器。例如,我需要0,30000范围内的数字,如何确保我不会只从我的范围内获得小数字。我的函数:

代码语言:javascript
复制
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吗?

EN

回答 1

Stack Overflow用户

发布于 2017-05-14 02:01:29

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

你要找的是一个uniform_real_distribution,它在给定的范围内输出浮点数。但是,它只在半开放的范围内执行此操作。

代码语言:javascript
复制
std::uniform_real_distribution<double> distribution(0, 30000);
double temp=distribution(rng);

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

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43956220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档