如何确定二进制字符串的统计随机性?
问题,我如何编码自己的测试,并返回一个与统计随机性相对应的值,0到1.0之间的值(0不是随机的,1.0是随机的)?
测试需要处理任何大小的二进制字符串.
当你用笔和纸做时,你可以探索这样的字符串:
0(任意随机性,唯一的另一种选择是1)
00(不是随机的,它是重复的并匹配大小)
01(更好,两个不同的值)
010 (较少随机,回文)
011(较少随机,更多1,仍然可以接受)
0101(较少随机,模式)
0100(更好,更少,但任何其他分布导致模式)
案例:
大小:1,可能性:2
0:1.0(随机)
1:1.0(随机)
大小:2,P:4
00 :?
01:1.0(随机)
10:1.0(随机)
11 :?
S:3,P:8
000 :? 非随机
001:1.0(随机)
010 :? 较少随机
011:1.0(随机)
100:1.0(随机)
101 :? 随机少
110 1.0(随机)
111 :? 非随机
等等.
我觉得这可能会在将字符串分解为所有可能的子串并比较频率方面发挥很大作用,但似乎这种基础工作应该在计算机科学的早期就已经完成了.