我试图压缩一个64 MByte文本文件,其中只包含7个不同的字母,随机分布,并出现在大致相同的频率。
我注意到了各种压缩软件程序(如7Zip和WinRar )的有趣行为。这两个应用程序的压缩比约为35%。
当文件包含8个不同的字母,也是随机分布和出现在大约相似的频率,压缩比小于0.3%!
有人能解释一下吗?
谢谢。
发布于 2020-11-03 06:19:17
这只能由你用“8个不同的字母”构造文件的错误来解释。您使用七个不同字母构造的文件看起来是正确的,因为压缩比应该是log2(7)/8,即0.351。对于相同的8个字母,压缩比是log2(8)/8,它是0.375。
也许您的文件在这八个字母中有一个重复的模式。
更新:
您正在使用rand()
生成“随机”发行版。不幸的是,rand()
的经典实现在低的几位中具有很差的随机性,并且具有重复的模式。您的% 7
使用来自rand()
的所有位,但% 8
只使用低的三位。% 8
等同于& 7
。
而是使用random()
,它生成低比特以及任何比特都具有良好随机行为的随机数。
https://stackoverflow.com/questions/64657046
复制相似问题