我与新的C++ 0x随机库中玩耍,并在此基础上的问题:
什么是获得的C++ 0x随机数生成器的状态的标准呢?
似乎如果你不知道随机生成器当前状态的种子,保存其状态的唯一方法是将生成器存储在流中.为此,我写了以下内容
#include <iostream>
#include <sstream>
#include <random>
int main(int /*argc*/, char** /*argv*/)
{
std::mt19937 engine1;
unsigned int var = engine1(); // Just to get engine1 out of its initial state
std::stringstream input;
input << engine1;
std::mt19937 engine2;
input >> engine2;
std::cout<<"Engine comparison: "<<(engine1 == engine2)<<std::endl;
std::cout<<"Engine 1 random number "<<engine1()<<std::endl;
std::cout<<"Engine 2 random number "<<engine2()<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)
这输出
发动机比较:1
发动机1随机数581869302
发动机2随机数4178893912
我有几个问题:
谢谢.
这对我来说看起来像是一个错误。我在libc++上运行了你的代码,输出是:
Engine comparison: 1
Engine 1 random number 581869302
Engine 2 random number 581869302
Run Code Online (Sandbox Code Playgroud)