首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >怎样才能将文件压缩到小于其熵?

怎样才能将文件压缩到小于其熵?
EN

Stack Overflow用户
提问于 2015-12-08 04:20:51
回答 1查看 218关注 0票数 0

我创建了一个包含100,000个数字的文件,这些数字是从集合{1,2,3,4,5,6,7,8}中均匀绘制的(概率为1/8)。

当看一下我硬盘上这个文件的大小时,它是293KB(千字节),这是有意义的,因为一个人需要3位来“识别”一个介于1和8之间的数字,3*100,000 =300KB。

接下来,我使用Win-zip压缩文件,发现文件被压缩到只有57KB!这怎么可能呢?因为我希望我在抽奖时使用的随机数生成器是理想的。这意味着序列应该是真正随机的,因此文件的大小应该由它的熵(即300KB)给定。

EN

回答 1

Stack Overflow用户

发布于 2015-12-08 04:43:54

我担心你对某些概念感到困惑。

3位乘以100,000得到300,000 ,字节有8位,大约相当于37.5KB。这与300KB相去甚远。

(在任何情况下,如果您要创建“一个包含100,000个数字的文件”,那么您的硬盘上没有魔法仙女,它会计算出您的数字的最小和最大范围,并使用表示所有数字所需的最小位数将它们存储在文件中。)

因此,让300KB与10万个一位数的熵完全无关,这一点非常重要。

您完全没有告诉我们您是如何创建该文件的,所以它的文件格式是一个谜,但我们可以进行一些简单的计算和猜测: 293 KB乘以1024等于300,000,所以您拥有的是一个300,000字节的文件。这意味着您将为每个数字写入3个字节。这意味着您已经将这些数字作为文本写入文本文件中,每个数字后面跟着一个逗号,然后跟着一个空格,或者每个数字后面跟着一个回车符和换行符,或者类似的东西。

文本文件格式在存储空间方面非常浪费。

所以,是的,这是一个高度可压缩的文件,大部分由相同的字节组成,甚至不相同的字节(数字)都映射到每个字节只有3位,所以难怪整个文件压缩得如此好。

在这个问题的提出过程中,没有任何自然规律受到损害。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34142439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档