标准是否保证如果std::mt19937
被相同的数字植入,它会在所有平台上生成相同的数字序列?重现C++ 11随机生成器的相同结果
换句话说,它的实现是由标准定义好还是像std::rand()
这被认为是实现细节?
标准是否保证如果std::mt19937
被相同的数字植入,它会在所有平台上生成相同的数字序列?重现C++ 11随机生成器的相同结果
换句话说,它的实现是由标准定义好还是像std::rand()
这被认为是实现细节?
In [rand.eng.mars] 1-5该段落基本总结了mersenne twister algorithm的实现细节。
std::mt19937
仅仅是
using mt19937 =
mersenne_twister_engine<uint_fast32_t,
32,624,397,31,0x9908b0df,11,0xffffffff,7,0x9d2c5680,15,0xefc60000,18,1812433253>;
一个typedef和所有的标准说,有关的预期结果是:
要求的行为:10000次一 默认构造的对象连续调用类型mt19937应产生值 4123659995.
没有其他保证。
但是,因为std::mersenne_twister_engine
需要遵循mersenne twister PRNG实施,所以它的实施是明确定义的。
我认为它是实现定义 – CinCout