aha*_*ala 66 c++ random stl c++11
我使用以下代码来测试c++ <random>
库.
为什么每次运行已编译的可执行文件时都会得到完全相同的序列?rd()
编译是确定性的吗?如何为每次运行获得不同的输出?
Windows 7 64位上的GCC 4.8.1.使用http://nuwen.net/mingw.html上的 MinGW发行版
编辑:我用Visual Studio测试了相同的代码.没有问题.输出是不确定的.这可能是我使用的mingw gcc 4.8.1中的一个错误.
#include <iostream>
#include <random>
using namespace std;
int main(){
random_device rd;
mt19937 mt(rd());
uniform_int_distribution<int> dist(0,99);
for (int i = 0; i< 16; ++i){
cout<<dist(mt)<<" ";
}
cout <<endl;
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*som 32
来自http://en.cppreference.com/w/cpp/numeric/random/random_device:
注意,如果非确定性源(例如,硬件设备)对于实现不可用,则可以根据伪随机数引擎来实现std :: random_device.
我希望有一个不错的实现,至少可以为RNG播种.
编辑:我怀疑他们每次故意选择提供相同的序列,以明确表明流不像承诺的那样随机.
归档时间: |
|
查看次数: |
16348 次 |
最近记录: |