2

長い 0-1 ビット シーケンスのランダム性テストに NIST ランダム性テスト スイートを使用しようとしています。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}];
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 に記載されている結果と比較できます。

> ./assess.exe 1000000 

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

編集

以下は、0/1 の文字列配列 A をバイナリとして書き込む方法に関する Amro の説明の (テストされていない) 解釈です。

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