del*_*ely 2 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}];
Run Code Online (Sandbox Code Playgroud)
我假设您已按照手册中的说明安装(编译)了软件
要查看如何运行该软件,请从手册中的第 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)
Run Code Online (Sandbox Code Playgroud)
[帽子提示@Amro 在下面的评论中解释了备用二进制文件格式。]
将文件放在程序源目录下并运行
> ./assess.exe 10000
Run Code Online (Sandbox Code Playgroud)
或系统上的等效项,然后按照提示进行操作。输出位于 \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?]
Run Code Online (Sandbox Code Playgroud)
编辑
这是 Amro 关于如何将 0/1 的字符串数组 A 编写为二进制的解释的(未经测试的)解释:
fid=fopen('test.txt','w','native');
fwrite(fid, bin2dec(reshape(num2str(A),[],8)), 'uint8')
fclose(fid)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3693 次 |
最近记录: |