确定数字流中循环的存在 - 循环的模式识别

时间:2014-03-20 07:40:49

标签: r random cycle prng

我试图制作一个伪随机数发生器并生成10000个数字。我想确定它是否存在循环?根据我的逻辑,可能存在最大长度(INT_MAX)**15的循环 - 生成和测试,直到该值不可行。那么,有没有办法识别N个生成的数字(足够大 - 10007个数字)来估计那里的循环长度?

可能在R?

1 个答案:

答案 0 :(得分:3)

您的问题的答案可能要复杂得多。测试PRNG中的弱点不是一个简单的问题,它高度依赖于用于PRNG的算法。如果您的PRNG类型为Linear congruential generator,则可以使用名为spectral test的测试。对于其他类型的PRNG,还有其他测试。

论文 TestU01: A C Library for Empirical Testing of Random Number Generators讨论理论并包含有关如何测试各种类型的软件示例。