首页 > 解决方案 > 使用给定种子生成的随机数序列是否保证在不同版本的标准中是相同的?

问题描述

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

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

标签: c++randomstandardsc++-standard-libraryrandom-seed

解决方案


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

现在,关于你真正的问题。C++标准库中的“那个”随机数生成器?他们有很多。rand不是其中之一:-)

有“随机数引擎”,可以生成“随机位序列”。他们包括:

  • linear_congruential_engine
  • mersenne_twister_engine
  • subtract_with_carry_engine

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

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


推荐阅读