在数字列表中测试随机性

时间:2016-07-10 09:03:34

标签: java algorithm

我有一个0到9之间的数字列表。这个数字有100万个。我试图测试这些数字是否是随机的,或者存在隐藏的现有模式。获得结果后,我使用Chi Squared Test来确定值是否是随机的。

测试已经完成:

计数

  1. 计算每个号码重复的次数。 (即:0:100000次,1:99868次......)
    1. 检查重复数字之间的差距。 (例如:数字0 - 07860在0再次重复之前有3的差距。所以计算0的差距 - 差距2:12647次,差距3:4500次.....)
    2. 串行

      1. 检查序列模式。 2,3,4的模式一直到30.(示例模式3对于这些数字 - 7856743:检查模式785,856,567 ......)
      2. 扑克

        1. 检查扑克模式。模式2,3,4一直到30.(示例模式71188,其中有5个数字。检查此模式重复的频率。例如,在7118828374571188273462371188中,此模式重复3次。
        2. 我用Java编写了上述测试。无论重要性有多小,我还能做其他检查。一直在查阅书籍,我无法找到任何进一步的随机性高级测试。

          请指教。

1 个答案:

答案 0 :(得分:1)

NIST发布了一系列随机数生成器测试。它们不是用Java实现的,所以如果排除使用它们的测试套件,你可以使用它们从中汲取灵感。

http://csrc.nist.gov/groups/ST/toolkit/rng/stats_tests.html

this问题的答案也有一些相关的链接和答案。