首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何包含uniform_real_distribution的最大值

如何包含uniform_real_distribution的最大值
EN

Stack Overflow用户
提问于 2018-04-30 08:12:12
回答 1查看 217关注 0票数 1

我是C++的初学者,我正在尝试探索C++11特性。在这里,我试图熟悉新的随机性产生引擎。

我总结了关于这个主题的教程中的以下代码,并注意到了两件事:

1- uniform_real_distribution doe不包括最大值。

2-注释行会产生一个错误,尽管它在本教程中工作得很好。

代码语言:javascript
复制
#include <iostream>
#include <random>
#include <chrono>
#include <string>  

using namespace std;

int main(){
    unsigned seed = 201;
    //seed = chrono::steady_clock()::now().time_since_epoch().count();
    default_random_engine e(seed);
    uniform_real_distribution<double> u(0,9);
    vector<double> v(10);
    int num;
    for(int i = 0; i < 400; ++i){
        num = u(e);
        ++v[num];
    }
    for (int i = 0; i < 10; ++i)
        cout << i << ":  " << string(v[i],'*') << "\n";
}

我试图找出这两件事的原因,但没有运气。

所以,我的问题是:

1-如何包含最大值?

2-当取消注释chrono行时,我为什么要得到错误?

代码语言:javascript
复制
cannot convert 'std::chrono::_V2::steady_clock' to 'unsigned int' in initialization

注意:我使用的是MinGW64 g++和c++14。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-30 14:28:41

  1. 正如Chris已经说过的,您可以使用nextafter作为uniform_real_distribution的第二个参数。
  2. 注意,首先实例化一个新的对象chrono::steady_clock (使用chrono::steady_clock() ),然后尝试从该对象调用静态成员now()

由于now()chrono::steady_clock的静态成员函数,所以您可以(而且应该)直接调用chrono::steady_clock::now()

最终代码:

代码语言:javascript
复制
#include <iostream>
#include <random>
#include <chrono>
#include <string>  

using namespace std;

int main(){
    unsigned seed = 201;
    seed = chrono::steady_clock::now().time_since_epoch().count();
    default_random_engine e(seed);
    uniform_real_distribution<double> u(0,std::nextafter(9, std::numeric_limits<double>::max()));
    vector<double> v(10);
    int num;
    for(int i = 0; i < 400; ++i){
        num = u(e);
        ++v[num];
    }
    for (int i = 0; i < 10; ++i)
        cout << i << ":  " << string(v[i],'*') << "\n";
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50096448

复制
相关文章

相似问题

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