网上找到开源的的nist算法,make之后发现算法太专业,不知道怎么用,经过一段时间摸索,弄清楚的写下来。
源码目录:nist/sts-2.1.2/;
编译make
我的随机数包rng2.dat是138M的二进制文件(只计算前128MB),执行所有运算大概耗时3个小时。
1.运行./assess 8388608(128M位长度1073741824bit分成128段,每段1MB=8388608bit)
2.0 导入文件
3.输入随机数文件名
4.输入1选择15项全部测试
5.输入0默认参数(这个参数可以调整,有时候需要扩大数据单元)
6.How many bitstreams? 输入流个数128;这个流个数和第一步中的文件位长度存在这样关系:
位长度*bitstreamsnum=文件总位长度。一般随机数文件在32M以内(2G内存支持),bitstreamsnum默认输入1,第一步输入文件总bit长度。如果文件超过32M那么计算过 程中内从不足,因此需要第一步输入文件总长度的1/8、1/16...,然后在此处输入8、16,等价于把源文件划分为等长的几条流,来做随机性检查。
7.输入1选择二进制文件
8.测试结果在: /experiments/AlgorithmTesting/results.txt 每种算法目录下都有results.txt 文件中描述的是P-value值,在ALPHA = 0.0100条件下(默认值),貌似这个值大于0.01就表示差不多随机,越大越好。
备注:
我测试128M随机数包,数据量太大,因此分成128条流计算,得出结果15条算法中满足12条,剩余3条部分不满足,这3条基本上都是分段检测随机性的,主要有:
NonOverlappingTemplate、OverlappingTemplate、RandomExcursionsVariant.
时隔两年,重新测试一次(电脑配置i3) 8G内存+256G固态硬盘,测试数据138MB二进制随机数包,128个流,耗时3h。
10 12 10 12 13 13 15 16 13 14 0.949602 126/128 LinearComplexity
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The minimum pass rate for each statistical test with the exception of the
random excursion (variant) test is approximately = 123 for a
sample size = 128 binary sequences.
The minimum pass rate for the random excursion (variant) test
is approximately = 107 for a sample size = 112 binary sequences.
For further guidelines construct a probability table using the MAPLE program
provided in the addendum section of the documentation.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -