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

generate same random permutation on every computer

本文关键字:随机 排列 计算机      更新时间:2023-10-16

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

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

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