NIST随机性测试需要一系列ASCII 0和1,但不接受来自MATLAB的任何试验

时间:2013-08-28 12:27:34

标签: python matlab wolfram-mathematica

我正在尝试使用NIST随机性测试套件进行长0-1位序列的随机性测试。 它要求我提供ASCII零和1或每个字节的二进制文件和8位数据。但是,我试过了

save(...,'-ascii')fwrite()以及其他一些使其有效的命令,但它不接受,它给了我segmentation error + igamc: UNDERFLOW error.

如果有人可以说如何创建完全匹配的格式,那将是非常好的另外如果有人知道MATHEMATICA他们从MATHEMATICA创建了他们自己的样本文件,也许它可以帮助格式,你可以告诉我该怎么做在MATLAB中做。

BinExp[num_,d_] := Module[{n,L},

If[d > $MaxPrecision, $MaxPrecision = d];

n = N[num,d];

L = First[RealDigits[n,2]]

];

SE = BinExp[E,302500];

Save["data.e",{SE}];

1 个答案:

答案 0 :(得分:4)

我假设您按照manual

中的说明安装(编译)了软件

要了解如何在手册的第5.3节中启动软件。

您可以在matlab中生成随机0/1的ascii文件,如下所示:

N=10000;  % <-- length of sequence

seq = rand(N,1)>0.5;    
fid=fopen('test.txt','w','native');
fprintf(fid,'%d',seq)
fclose(fid)

[帽子提示@Amro在下面的评论中解释了备用二进制文件格式。]

将文件放在程序源目录中并运行

> ./assess.exe 10000 

或您系统上的同等产品,并按照提示操作。输出位于\ experiments \ AlgorithmTesting \

中的文件夹中

您可以使用文件夹\ data中的测试数据评估程序,并与附录B中列出的结果进行比较,例如,在data.pi中使用ASCII格式的pi代表进行比较:

> ./assess.exe 1000000 

    0 [data source?]
    .\data\data.pi [path to file?]
    1 [tests?]
    0 [adjust pars?] 
    1 [bitstreams?] 
    0 [ASCII?]

修改

这是Amro关于如何将字符串数组A写为0/1作为二进制的解释(未经测试):

fid=fopen('test.txt','w','native');
fwrite(fid, bin2dec(reshape(num2str(A),[],8)), 'uint8')
fclose(fid)