如何确定二进制字符串的统计随机性?如何确定二进制字符串的统计随机性?
Ergo,我该如何编码我自己的测试,并返回一个对应于统计随机性的单值,一个介于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(随机)
0123:?少随机
011:1.0(随机)
100:1.0(随机)
101:?随机性较差
110 1.0(随机)
0123:非随机
依此类推。
我觉得这可能玩了很多破入串入所有可能子和比较频率,但似乎这种基础的应该已经在计算机科学的早期完成。
任何单一的二进制字符串可以看作是随机的!你需要有一个样本空间来比较它... – 2010-06-22 23:43:39
你究竟在做什么? – 2010-06-22 23:45:48
只要这样:读取一个任意的二进制字符串,并注意其统计随机性。例如,0101010101010101的平衡数字为1和0,但几乎不是随机的。 可以这样说:[00000000的随机性为0] [01010101的随机性为0.01] [00000101的随机性为0.05] [01001011的随机性为1.0] – Tim 2010-06-22 23:50:47