使用给定种子生成的随机数序列是否保证在标准版本之间相同?

Is the sequence of random numbers generated with a given seed guaranteed to be the same across versions of the standard?

如果我从 C++ 标准库中使用给定的数字(例如 seed = 1)为随机数生成器播种,并生成一个随机数序列,这个序列是否保证在未来的版本中相同标准?

C++ 标准是否对此提供保证?

迂腐地说,对标准的未来版本没有任何保证,包括可能有标准的未来版本的想法。

现在,开始您的真正问题。 "The" C++标准库中的随机数生成器?他们有很多。 rand 不是其中之一:-)

有 "Random number engines",生成 "random sequences of bits"。它们包括:

  • linear_congruential_engine
  • mersenne_twister_engine
  • subtract_with_carry_engine

rand.predef 部分给出了特定随机数引擎所需的结果。这告诉你它们应该是便携的。 [ 感谢@HowardHinnant 提供参考。 ]

另一方面,分布(uniform_int_distribution 等)可能因实施而异。

C++ 随机数序列在 标准的未来版本 中是否会保持相同序列的问题就像当前由为了向后兼容,C++ 标准将保留在未来的版本中。这是一个只有 C++ 标准委员会才能回答的问题。 (这是我的评论,搬到了一个答案。)