私自身も興味があったので、先に進んでこれをテストするプログラムを書きました。コードをコンパイルするには、Crypto++が必要です。
免責事項: 暗号化、または一般的な数学に関してさえ、私は自分の足を撃つほど十分に知っています。したがって、以下の結果は大まかに見て、私が使用しているツールについて大雑把な知識しか持っていないことを覚えておいてください。
最初の 8 バイト、中間の 8 バイト、最後の 8 バイトの 3 つの部分文字列のみをサンプリングしました。簡単に言えば、それらは等しくランダムです。
ただし、より小さいサンプル空間を使用すると、最後の 8 ビットがわずかにランダムに見えるようになります。サンプリング空間が大きくなるほど、3 つの部分文字列すべてが完全なランダム性に近づきます。
1000回の繰り返し:
First: 0.995914
Middle: 0.996546
Last: 0.998104
5000 回の反復:
First: 0.998387
Middle: 0.998624
Last: 0.999501
10000 回の繰り返し:
First: 0.999614
Middle: 0.999457
Last: 1
30000 回の繰り返し:
First: 1
Middle: 1
Last: 1
「ランダム性」は、Crypto++ のMaurerRandomnessTestクラスによって測定されます。参考までに、上記のコードからコンパイルされた実行可能ファイルのランダム値は で0.632411
あり、Project Gutenburg からダウンロードされたシェイクスピアのマクベスのコピーのランダム値は0.566991
です。