【发布时间】:2015-10-14 17:23:40
【问题描述】:
最近我正在尝试使用#include<random> 中定义的random engines 在C++ 中生成随机数的程序。我的程序如下:-
#include <iostream>
#include <random>
#include <chrono>
using namespace std;
int random (int lim)
{
default_random_engine dre (chrono::steady_clock::now().time_since_epoch().count());
uniform_int_distribution<> uid(1,lim);
return uid(dre);
}
int main()
{
for (int i=0;i<10;++i)
cout<<random(100)<<" ";
return 0;
}
简单,绝对!但是当我尝试输出时,数字不像这些那样随机:-
66 95 95 96 96 96 96 96 97 97
当我稍微更改我的程序并将default_random_engine 声明为static 或将其设置为global 时,我的输出是正确的,例如:-
62 53 21 38 7 51 46 40 86 12
谁能指出我的程序最初出了什么问题?小改动如何帮助我获得更好的输出?
【问题讨论】: