私の推測では、最適なシリアル化手法を使用していないため、ランダムファイルの圧縮を達成していると思いますが、詳細がないと、質問に答えることはできません。[0、k)の範囲のn個の数値を持つ圧縮ファイルはn * log2(k)ビット未満ですか?(つまり、n * log256(k)バイト)。もしそうなら、gzipはあなたが生成するすべてのランダムファイルに対してそれを行うことができますか、それともたまにしか行いませんか?
「mt19937prng[1]でuniform_int_distribution(0、255)を使用してランダムオクテットのファイルを生成しました。ファイルの最適な圧縮は何ですか?」と言ったとします。さて、私の答えは合理的に「おそらく約80ビット」である可能性があります。私があなたのファイルを複製する必要があるのは
そして、80ビットのデータが与えられたファイルを再現できれば、それが最適な圧縮です。残念ながら、これは汎用の圧縮戦略ではありません。gzipが、特定のprngを使用してファイルを生成したことを認識できる可能性は非常に低く、シードをリバースエンジニアリングできる可能性ははるかに低くなります(ただし、少なくとも理論的には、これらは達成可能です。Mersenneツイスターは暗号的に安全なprngではありません。)
別の例として、暗号化する前にテキストを圧縮することをお勧めします。結果は、暗号化後の圧縮よりもかなり短くなります。しかし、実際には、暗号化によってエントロピーが追加されることはほとんどありません。せいぜい、暗号化キーのビット数を追加します。それにもかかわらず、結果の出力をランダムデータと区別することは困難であり、gzipはそれを圧縮するのに苦労します(ただし、多くの場合、数ビットを絞り出すことができます)。
注1:注:これがすべてc ++ 11/boostの用語です。mt19937は、メルセンヌツイスター疑似乱数ジェネレーター(prng)のインスタンスであり、周期は2^19937-1です。
注2:メルセンヌツイスターの状態は実際には624ワード(19968ビット)ですが、ほとんどのプログラムはそれをシードするためにいくらか少ないビットを使用します。おそらく、32ビット整数の代わりに64ビット整数を使用しましたが、答えはそれほど変わりません。