これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド ent です。
プログラム:
NAME
ent - 擬似乱数シーケンスのテスト
SYNOPSIS
ENT [オプション] [ファイル]
DESCRIPTION
耳鼻咽喉科のロゴ
ENT のバイト ストリームに対してさまざまなテストを実行します。 file (そうでない場合は標準入力
file が指定されている)、標準出力に出力を生成します。 例えば:
エントロピー = 7.980627 文字あたり XNUMX ビット。
最適な圧縮によりサイズが小さくなります
この 51768 文字ファイルの 0% です。
51768 個のサンプルのカイ二乗分布は 1542.26 で、ランダムです。
0.01% の確率でこの値を超えます。
データバイトの算術平均値は 125.93 (127.5 = ランダム) です。
Pi のモンテカルロ値は 3.169834647 (誤差 0.90 パーセント) です。
シリアル相関係数は 0.004249 (完全に無相関 = 0.0) です。
計算された値は次のとおりです。
エントロピ
ファイルの内容の情報密度。XNUMX つあたりのビット数で表されます。
キャラクター。 上記の結果は、圧縮された画像ファイルを処理した結果です。
JPEG は、ファイルの情報が非常に高密度であること、つまり本質的にランダムであることを示します。 したがって、
ファイルを圧縮してもサイズが小さくなる可能性は低いです。 対照的に、次の C ソース コードは、
プログラムには 4.9 文字あたり約 XNUMX ビットのエントロピーがあり、最適であることを示しています。
ファイルを圧縮すると、サイズが 38% 削減されます。 [ハミング、104-108ページ]
カイ二乗 テスト
カイ二乗検定は、データのランダム性を調べるために最も一般的に使用される検定です。
擬似乱数シーケンス発生器のエラーに非常に敏感です。 カイ二乗
分布はファイル内のバイト ストリームに対して計算され、次のように表されます。
絶対数と、真にランダムなシーケンスが発生する頻度を示すパーセンテージ
計算された値を超える可能性があります。 パーセンテージは、
テストされたシーケンスはランダムではない可能性があります。 パーセンテージが 99% を超える場合、または
1% 未満の場合、その配列はほぼ確実にランダムではありません。 パーセンテージが次の範囲にある場合
99% と 95%、または 1% と 5% の間の順序は疑わしいです。 90% と XNUMX% の間のパーセンテージ
95%、5%、10% は、シーケンスが「ほぼ疑わしい」ことを示します。 JPEG ファイルであることに注意してください。
情報は非常に密集していますが、カイ二乗検定で明らかなように、ランダムとは程遠いものです。
このテストをさまざまな擬似ランダム シーケンス ジェネレーターの出力に適用すると、次のようになります。
面白い。 標準 Unix によって返される下位 8 ビット ランド(1) 関数、のための
たとえば、次の結果が得られます。
500000 個のサンプルのカイ二乗分布は 0.01 で、ランダムです。
99.99% の確率でこの値を超えます。
一方、改良されたジェネレーター [Park & Miller] は次のように報告しています。
500000 個のサンプルのカイ二乗分布は 212.53 で、ランダムです。
95.00% の確率でこの値を超えます。
したがって、標準の Unix ジェネレーター (または少なくともそれが返す下位バイト) は次のようになります。
容認できないほどランダムではありませんが、改良されたジェネレーターははるかに優れていますが、それでも
要求の厳しいアプリケーションにとって懸念を引き起こすほど十分に非ランダムです。 両方を対比してみる
これらのソフトウェア ジェネレーターは、作成された本物のランダム シーケンスのカイ XNUMX 乗結果を備えています。
放射性崩壊イベントのタイミングを計ることによる[1]:
32768 個のサンプルのカイ二乗分布は 237.05 で、ランダムです。
75.00% の確率でこの値を超えます。
カイ二乗検定の詳細については、[Knuth、pp. 35-40] を参照してください。 インタラクティブなチャイ
平方計算機[2]はこのサイトから入手できます。
算術 MEAN
これは、単にすべてのバイト (ビットの場合はビット) を合計した結果です。 -b オプション指定あり)
ファイルをファイル長で割ります。 データがランダムに近い場合、これは次のようになります。
約127.5(0.5 -b オプション出力)。 平均がこの値から外れる場合、値は
一貫して高いか低いです。
モンテ カルロ VALUE FOR PI
連続する 24 バイトの各シーケンスは、オブジェクト内の XNUMX ビット X および Y 座標として使用されます。
四角。 ランダムに生成された点の距離が半径より小さい場合
四角形内に内接する円の場合、XNUMX バイトのシーケンスが「ヒット」とみなされます。 の
ヒットのパーセンテージは、Pi の値を計算するために使用できます。 非常に大きなストリームの場合 (これは
近似の収束が非常に遅い)、次の場合、値は Pi の正しい値に近づきます。
順序はランダムに近いです。 放射性崩壊によって作成された 32768 バイトのファイルは次の結果をもたらしました。
Pi のモンテカルロ値は 3.139648438 (誤差 0.06 パーセント) です。
シリアル 相関 係数
この量は、ファイル内の各バイトが以前のバイトにどの程度依存しているかを測定します。
バイト。 ランダム シーケンスの場合、この値 (正または負の値) は次のようになります。
もちろん、ゼロに近くなります。 C プログラムなどの非ランダムなバイト ストリームはシリアルを生成します。
相関係数は0.5程度。 非圧縮などの非常に予測可能なデータ
ビットマップは 1 に近いシリアル相関係数を示します。[Knuth、pp. 64-65] を参照してください。
のガイドをご参照ください。
OPTIONS
-b 入力は 8 ビット バイトではなくビット ストリームとして扱われます。 統計
報告される内容はビットストリームの特性を反映しています。
-c 可能な各バイト (または、ビットの場合はビット) の出現数の表を出力します。 -b
オプションも指定されています) 値、およびファイル全体に占める割合
その値。 ISO-8859-1 (Latin-1) 文字セットの印刷可能な文字は次のとおりです。
XNUMX 進バイト値とともに表示されます。 非タース出力モードでは、次の値が使用されます。
ゼロのオカレンスは出力されません。
-f 統計を計算する前に、大文字を小文字に変換します。 折り畳みが完了しました
ISO-8859-1 (Latin-1) 文字セットに基づいており、アクセント文字が正しく付いています
処理されました。
-t 簡潔モード: 出力はカンマ区切り値 (CSV) 形式で書き込まれます。
スプレッドシートにロードし、任意のプログラミング言語で簡単に読み取ることができます。 「簡潔」を参照
詳細については、以下のモード出力形式を参照してください。
-u 通話方法情報を出力します。
onworks.net サービスを使用してオンラインで ent を使用する