C++ 复制C+的相同结果+;11随机发生器

C++ 复制C+的相同结果+;11随机发生器,c++,c++11,random,mt19937,C++,C++11,Random,Mt19937,该标准是否保证,如果std::mt19937以相同的编号播种,它将在所有平台上生成相同的编号序列 换句话说,它的实现是被标准很好地定义了,还是像std::rand()一样被认为是实现细节?在1-5中,这篇文章基本上总结了该标准的实现细节 std::mt19937只是 using mt19937 = mersenne_twister_engine<uint_fast32_t, 32,624,397,31,0x9908b0df,11,0xffffffff,7,0x9d

该标准是否保证,如果
std::mt19937
以相同的编号播种,它将在所有平台上生成相同的编号序列

换句话说,它的实现是被标准很好地定义了,还是像
std::rand()
一样被认为是实现细节?

在1-5中,这篇文章基本上总结了该标准的实现细节

std::mt19937
只是

using mt19937 =
      mersenne_twister_engine<uint_fast32_t,
       32,624,397,31,0x9908b0df,11,0xffffffff,7,0x9d2c5680,15,0xefc60000,18,1812433253>;
使用mt19937=
梅森捻线机;
标准对预期结果的描述是:

所需行为:第10000次连续调用 mt19937类型的默认构造对象应生成值 4123659995

没有作出其他保证

但是,由于要遵循mersenne twister PRNG的实现,需要使用
std::mersenne twister\u引擎
,因此它的实现定义良好。

在1-5中,这篇文章基本上总结了该引擎的实现细节

std::mt19937
只是

using mt19937 =
      mersenne_twister_engine<uint_fast32_t,
       32,624,397,31,0x9908b0df,11,0xffffffff,7,0x9d2c5680,15,0xefc60000,18,1812433253>;
使用mt19937=
梅森捻线机;
标准对预期结果的描述是:

所需行为:第10000次连续调用 mt19937类型的默认构造对象应生成值 4123659995

没有作出其他保证


但是,由于要遵循mersenne twister PRNG实现,需要使用
std::mersenne twister\u引擎
,因此它的实现定义良好。

我认为它是实现定义的。我认为它是为不熟悉随机生成器算法的人(如我)定义的实现这听起来是一个非常奇怪的要求。@bolov在rand.eng.mars中读到1-5,这基本上是mersenne twister PRNG实现的一个总结。@bolov这个要求并不是很有用,因为标准已经很好地定义了
std::mersenne_twister_引擎及其默认种子的行为。@bolov-听起来很奇怪,但当你实现算法时,这是一个非常方便的检查。对于不熟悉随机生成器算法的人(如我),这听起来像是一个非常奇怪的要求。@bolov在rand.eng.mars中读到1-5,这基本上是mersenne twister PRNG实现的一个总结。@bolov这个要求并不是很有用,因为标准已经很好地定义了
std::mersenne_twister_引擎
的行为及其默认种子。@bolov-听起来很奇怪,但在实现算法时这是一个非常方便的检查。