所有伪随机数生成器最终都是周期性的吗?


24

所有伪随机数生成器最终都是周期性的吗?还是它们最终都是周期性的?

周期性是指像有理数一样,它们最终会产生周期性子序列...

伪随机意味着算法/数学生成随机数...


7
这是一个很有趣的观点,但是在有限内存的计算机上,每个非停止程序最终都是周期性的。您可以将算法分析为在Turing机器上运行,但是任何内存使用不受时间限制的PRNG都不是很实用。
彼得

@Peter,您说“任何内存使用不受时间限制的PRNG都不是很实用”。当存储器使用相对于时间是二次或线性时,可能不切实际,但是如果仅是对数的话该怎么办?看我的答案。
唐·哈奇

Answers:


39

所有不依赖外部随机性并使用有限数量的内存的伪随机数生成器最终都必须是周期性的,因为它们具有有限的状态。您可以将它们视为巨大的确定性有限自动机,它们具有特殊的“输出”状态,在这些状态下它们会提供输出。所有有限自动机最终都是周期性的,因此所有伪随机生成器都会产生最终周期性的输出。

但是,周期长度可能很大。例如,密码状态为128位的PRNG可能每位输出仅循环一次,因此,即使每纳秒输出1位,如果PRNG重复出现,太阳系也会死机。2128

如果允许PRNG使用无限数量的内存(这是不现实的),则可以输出的二进制扩展2,我们知道它最终不是周期性的(因为2是非理性的)。


评论不作进一步讨论;此对话已转移至聊天
DW

聊天链接已断开。是否仍有可能看到讨论记录?:/ @DW

@ cchan3141,我已将其还原;现在试试。但是,请注意,注释是设计使然的,聊天室也是如此。如果您发现其中的任何东西对其他人都有长久的价值,我建议您建议对答案进行修改以合并该信息,或者发布您自己的新答案。谢谢!
DW

7

PRNG是状态机。如果它们仅基于内部输入(与硬件和软件组合而成的扑克之星RNG相比,从...声音样本中不断播种本身),您将获得(C,S1,...),其中C是当前(或先前)值,S1,...可能是一组状态:

如果C可能有N个值(因为内存是有界的),并且您迭代N + 1次,则C的相同值至少会被击中两次。如果您迭代2N + 1次,您将为C击中相同值至少3次。

令T =(Ct,S1t,S2t)为某个状态(当前值和其他状态)。
令M =#{S1的值} X {S2的值X {...}是可能的状态组合的基数(同样:由于内存是有界的)。

如果将NM + 1迭代算法,则至少会达到相同状态(Ct,S1t,S2t,...)的两倍,从而产生与第一次相同的输出值和相同的跟随状态序列,并且因此变得定期。


6

非周期性伪随机序列的简单示例:将所有正整数的二进制表示形式按以下顺序连接在一起:

110111001011101111000...

(添加一个“。”,它称为二进制Champernowne常量。)

当然,就伪随机序列而言,这并不是很高的质量,但它表明无需占用大量内存就可以实现。

在此示例中,存储状态所需的内存在理论上是不受限制的;但是它的增长非常缓慢(与之相比,计算数字所需的内存π2

无限制的内存需求对于图灵机不是问题,实际上,这也不是问题,因为增长如此缓慢,但这取决于您打算将其用于什么用途。

2128

2128

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.