使用给定种子生成的随机数序列是否保证在标准版本之间相同?
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++ 标准委员会才能回答的问题。 (这是我的评论,搬到了一个答案。)