两个PRNG可以用不同的种子产生相同数量吗?

  • 本文关键字:PRNG 两个 种子 prng
  • 更新时间 :
  • 英文 :


我知道,如果您将同一种子与两个不同的PRNG一起使用,您将收到相同的数字序列。有人知道用两个不同的种子是否可以产生相同的数字吗?如果是,几率有多大?

我对此进行了测试,得到了一些奇怪的结果。如果我有两个相同PRNG的实例,并且每次用两个不同的随机种子对它们进行种子。随机数必须介于0和1000之间。在10000000次迭代之后,我得到了1046次相同的数字。如果我每次都不给它们播种,我会收到大约相同的次数(1033)。我有什么不明白的?我认为如果你每次都不重新播种,几率会大得多(嗯,也许不会)。就像从两副牌中挑选两张牌。如果我每次都不洗牌,我会认为如果我洗牌,几率会有所不同。

谢谢,Gary

几率取决于您使用的PRNG。假设它生成偶数分布的数字,并且你的种子是随机选择的,那么它只是你可以表示的不同数字的数量的函数。

*随机意味着与前一种子没有关系,也不知道所使用的算法。

对于一个32位整数,你可以表示2^32个不同的数字,所以给定一个整数,另一个足够随机的数字相同的几率是1/(2^32)。

这个问题的答案将取决于您正在使用的PRNG。不同的实现有不同的保证。如果你幸运的话,文档会告诉你这些保证是什么。

然而,任何像样的PRNG对于任何有效的种子都会有很长的周期。因此,两个不同的种子产生下一个相同数字的几率应该很小。(我希望是1/(2^N)的数量级,其中N是它所使用的数据类型中的位数。)

最后,我想知道这是否真的是你需要的信息。听起来你对独特性有某种要求,而不是随机性。如果你关心的是独特性,那么就有更好的解决方案。古老的经典是把一个不断增加的计数器放在一个足够长的地方。您也可以使用GUID——许多现代平台都有用于创建它们的库代码。

最新更新