表观测试是非定量的,我们以图形方式,来直观的显示随机数据的优劣。
基本原理:有规律的数据如果按照有规律的排列,一定能显示出一定的特征。
二进制数据使用0和1来表示的,数据可以横向排列或纵向排列,这里用横向排列,例如数据的1的部分用黑色表示,0的部分用白色表示。这样就可以显示数据的分布状况了。下面是C语言中那个rand()函数数据的分布图示

下面是MT19937数据的图示
分布优劣一目了然。
附NIST测试结果
1)10M字节rand数据测试结果
近似熵检测ApproximateEntropy = 0.971562
块内频率测试BlockFrequency = 0.202536
累积和测试CumulativeSums = 0.656400 , 0.570076
离散傅立叶变换测试FFT = 0.000000
-------------------------------超差
频率测试Frequency = 0.484637
线性复杂度检测LinearComplexity = 0.491553
块内最长连续“1”测试 = 0.719295
非重叠模板匹配测试NonOverlappingTemplate148点 全部 = 0.570076
重叠模板匹配测试OverlappingTemplate = 0.570994
随机偏移测试RandomExcursions八点 = 0.256553,0.213432,0.221726,0.706535,0.701148,0.682950,0.552461,0.695365
随机偏移变量测试RandomExcursionsVariant十八点 = 0.323546,0.372325,0.318170,0.432289,0.668989,0.476260,0.500882,0.716828,0.440006,0.195080,0.157649,0.123718,0.071764,0.075085,0.187501,0.314663,0.473742,0.387917
二元矩阵秩测试Rank = 0.554045
游程测试Runs = 0.569748
串行测试Serial = 1.000000
-------------------------------超差
全局通用统计测试Universal = 0.363136
2)10M字节MT19937数据测试结果
近似熵检测ApproximateEntropy = 0.677717
块内频率测试BlockFrequency = 0.987521
累积和测试CumulativeSums = 0.358215 , 0.246483
离散傅立叶变换测试FFT = 0.517551
频率测试Frequency = 0.223182
线性复杂度检测LinearComplexity = 0.697035
块内最长连续“1”测试 = 0.236865
非重叠模板匹配测试NonOverlappingTemplate148点 全部 = 0.246483
重叠模板匹配测试OverlappingTemplate = 0.070699
随机偏移测试RandomExcursions八点 = 0.130182,0.035950,0.117568,0.500498,0.524276,0.992722,0.929630,0.880842
随机偏移变量测试RandomExcursionsVariant十八点 = 0.706820,0.698784,0.555755,0.560875,0.389722,0.190117,0.153321,0.138274,0.375517,0.948046,0.957996,0.779668,0.874755,0.834827,0.750275,0.925128,0.701277,0.591040
二元矩阵秩测试Rank = 0.436544
游程测试Runs = 0.443078
串行测试Serial = 0.349080
全局通用统计测试Universal = 0.338559
可见rand()函数数据有两项超差。MT19937函数则全部合格。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2018-6-29 06:36
被sjdkx编辑
,原因: