2

我正在尝试使用 NIST 随机性测试套件对我的长 0-1 位序列进行随机性测试。它要求我提供 ASCII 零和一或一个二进制文件,每个字节包含 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}];
4

1 回答 1

5

我假设您已按照手册中的说明安装(编译)软件

要了解如何运行该软件,请参阅手册中的第 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 中 pi 的 ASCII 格式表示:

> ./assess.exe 1000000 

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

编辑

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

fid=fopen('test.txt','w','native');
fwrite(fid, bin2dec(reshape(num2str(A),[],8)), 'uint8')
fclose(fid)
于 2013-08-28T13:39:09.670 回答