https://csrc.nist.gov/projects/random-bit-generation/documentation-and-software
https://wenku.baidu.com/view/dc0ada02eff9aef8941e0644.html
https://blog.csdn.net/zkkzpp258/article/details/82685404
https://blog.csdn.net/zhaomengszu/article/details/79384050
https://blog.csdn.net/lafu5137/article/details/79593845 随机数测试的参数范围
另外 官方有使用文档
igamc:UNDERFLOW的原因:
1. size* bitstrems > sizeof(file) 例如: 就是./assess 10000, 然后bitstreams 100 100*10000 > 你的文件大小 (bytes)(采用ascii 的0,1串,那单位就是byte)
2. 数据过于 不随机 。一开始用一个seed,利用7位LFSR,生成127个0,1,然后换另一个seed,就一直 underflow。然后换成一个seed生成10个数,就可以成功测试。(虽然结果还是错的)
Linux安装
下载,解压
在ubuntu安装
复制到home
make
得assess文件
测试文件拷贝
测试
(我的randsme.txt含10000000个ascii 0,1)
这里 ./assess 1000000 。1000000*10=10000000
然后 0,选择输入文件方式
输入1,做是上面的全部测试
这里how many bitstreams和文件大小和一开始输入的 ./assess XXX有关
XXX * bitstreams num = 文件大小。因为我的测试文件是10000000个0,1 =1000000 * 10,所以输入10
然后因为是ascii形式的0,1(用 ofstream,写入了string "0" "1"),所以选择ascii。
分析完成。
测试结果 在
结果分析:
Freq.txt文件记录着0和1出现的频数。
有十组,就是我们上面输入的10组bitstream
先看测试种类。一共15种。
对应分析结果有15个文件夹
以其中Appro ..为例
打开有两个文件 result和stats。
分析stats
上面表明了测试种类为APPROXIMATE
然后分成了10组(对应上面的十组bitstream)
每组 一个p-VALUE.pvalue一般是>0.01 (1%)就是通过 (前面的sussess) (一般是这样,见下面的分析)
汇总到 finalanalysisreport
1.C1,C2...
这里,因为pvalue的范围是0-1,将0-1分为10个区间,每个区间0.1,C1,C2...就是统计落到各自区间的pvalue的数量。(比如我这里是10个bitstream,那么他们各自,对应一个测试,有一个Pvalue,所以每个测试的C1,C2+..C10 加起来应该等于10)。
[0.0-0.1 ) 左闭右开,应该是
[0.1,0.2)
...
最终的PVALUE 由卡方分布统计(在别人的blog上看到的,没有验证)
2.文档下方有解释
这里就是说对于这些统计性的测试 8/10组,4/5组就算通过。
比如下面这样意思应该就是5组中通过了5组或4组,10组中通过了10组。
3.失败的形式
对于某个测试失败后在这个txt内会有 '*' 号标识
比如这是我之前做的另外一个测试,可见有一个错误
100组中只有94组通过,没有达到96组
注意文档里数据对应的是下方的文字
然后这个universal的错误表面上看是100/100,100组全部合格,其实打开对应文件夹下面的stats发现全是error。那么应该这100组都是默认的0.5.都在C6下面
所以表面上100/100通过了,其实没通过,故后面有 '*' 号