重现C++ 11随机生成器的相同结果

Hum*_*awi 0 c++ random c++11 mt19937

是否由标准保证如果std::mt19937用相同的数字播种,它将在所有平台上产生相同的数字序列?

换句话说,它的实现是由标准定义好还是std::rand()被认为是实现细节?

Som*_*ken 5

[rand.eng.mars] 1-5中,该段落基本上总结了mersenne twister算法的实现细节.

std::mt19937 只是一个typedef

using mt19937 =
      mersenne_twister_engine<uint_fast32_t,
       32,624,397,31,0x9908b0df,11,0xffffffff,7,0x9d2c5680,15,0xefc60000,18,1812433253>;
Run Code Online (Sandbox Code Playgroud)

所有关于预期结果的标准说明:

必需行为:mt19937类型的默认构造对象的第10000次连续调用将产生值4123659995.

没有其他保证.

但是,因为std::mersenne_twister_engine要求遵循mersenne twister PRNG实施,所以它的实施明确定义的.