Answers:
所有不依赖外部随机性并使用有限数量的内存的伪随机数生成器最终都必须是周期性的,因为它们具有有限的状态。您可以将它们视为巨大的确定性有限自动机,它们具有特殊的“输出”状态,在这些状态下它们会提供输出。所有有限自动机最终都是周期性的,因此所有伪随机生成器都会产生最终周期性的输出。
但是,周期长度可能很大。例如,密码状态为128位的PRNG可能每位输出仅循环一次,因此,即使每纳秒输出1位,如果PRNG重复出现,太阳系也会死机。
如果允许PRNG使用无限数量的内存(这是不现实的),则可以输出√的二进制扩展,我们知道它最终不是周期性的(因为是非理性的)。
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,...)的两倍,从而产生与第一次相同的输出值和相同的跟随状态序列,并且因此变得定期。
非周期性伪随机序列的简单示例:将所有正整数的二进制表示形式按以下顺序连接在一起:
110111001011101111000...
(添加一个“。”,它称为二进制Champernowne常量。)
当然,就伪随机序列而言,这并不是很高的质量,但它表明无需占用大量内存就可以实现。
在此示例中,存储状态所需的内存在理论上是不受限制的;但是它的增长非常缓慢(与之相比,计算数字所需的内存
无限制的内存需求对于图灵机不是问题,实际上,这也不是问题,因为增长如此缓慢,但这取决于您打算将其用于什么用途。