首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NIST随机性测试需要一个ASCII 0和1的序列,但不接受MATLAB的任何试验。

NIST随机性测试需要一个ASCII 0和1的序列,但不接受MATLAB的任何试验。
EN

Stack Overflow用户
提问于 2013-08-28 12:27:34
回答 1查看 3.9K关注 0票数 2

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

save(...,'-ascii')fwrite()和其他一些命令使其工作,但它不接受,它给了我一个segmentation error + igamc: UNDERFLOW error.

如果有人能说出如何创建完全匹配的格式,那就很好了。另外,如果有人知道MATHEMATICA,他们就会创建他们自己的示例文件,如下所示,也许它可以帮助您了解格式,您可以告诉我在MATLAB中应该做什么。

代码语言:javascript
运行
复制
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}];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-28 13:39:09

我假设您已经按照手册中的指示安装(编译)了该软件

要了解如何运行该软件,请参阅手册第5.3节。

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

代码语言:javascript
运行
复制
N=10000;  % <-- length of sequence

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

Hat @Amro在下面的注释中解释了备用二进制文件格式。

将文件放在程序源目录中,然后运行

代码语言:javascript
运行
复制
> ./assess.exe 10000 

或等效于您的系统,并按照提示进行操作。输出在文件夹中\实验\算法--测试\

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

代码语言:javascript
运行
复制
> ./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写为二进制的解释(未经测试):

代码语言:javascript
运行
复制
fid=fopen('test.txt','w','native');
fwrite(fid, bin2dec(reshape(num2str(A),[],8)), 'uint8')
fclose(fid)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18487901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档