在每台计算机上生成相同的随机排列

时间:2016-02-06 09:54:42

标签: c++ random

我在序列random_shuffle上使用a 1000次。我想确保在每台计算机上最终的序列是相同的。这看起来可能不合适,但我仍想实现这一目标。 srand(x)能确保吗?

1 个答案:

答案 0 :(得分:3)

结果shuffle有两个不同的来源:未指定rand()的算法,因此不同的实现产生不同的数字序列;并且未指定random_shuffle的算法,因此,即使使用相同的伪随机数序列,不同的实现也会产生不同的结果。

您可以通过使用C ++ 11中的任何随机数生成器来消除第一个问题;它们全部详细说明,包括,对于某些特殊化,需要10,000th值,这是一个伟大的帮助调试它们的实现。但是,改组没有模拟。特别是,没有指定std::shuffle的算法,因此它不会给出可重现的结果。你必须自己写。这并不困难(远不如编写引擎那么困难),只需做一点研究;那里有很多讨论供你开始。