rand的文件是100万个随机数。它被压缩到415 kb ....如果无法压缩随机数据,这怎么可能。
谢谢。
Jon Hutton
答案 0 :(得分:1)
听起来他们每个字节存储为一个十进制数字。因此,只使用256个可能的字节值中的10个会使您有可能对随机数字进行log(256)/ log(10)压缩比,大约为2.4。你获得2.35(假设" kb" = 1024字节)。瞧。
通过将每三位数编码为十位,可以非常容易地得到2.4,因为1024> 1000.然后,您可以将1,000,000个十进制数字编码为416,667字节,或406.9 KiB。
使用像GMP之类的东西稍微困难一点,您可以将其编码为二进制的巨大百万位整数,这将需要415,242字节,即405.5 KiB。这对随机十进制数字来说就好了。
答案 1 :(得分:1)
您最有可能在谈论1955年发布的着名"A Million Random Digits"测试数据。因此,Mark已经猜到,它的数字,而不是数字,这就是为什么二进制版本只有415,241字节。另请参阅Mark Nelson's homepage,其中包含指向the binary file的链接。
请注意,最终结果(二进制文件)在不知情的情况下是不可压缩的 - 尽管文件中有一些小冗余来自创建方式 - 有关详细信息,请参阅this forum entry:
百万随机数字文件中可能存在其他偏差 我几年前在comp.compression中讨论过的。数据是 最初是通过采样由噪声驱动的5位计数器产生的 振荡器产生一组20,000个穿孔卡,50位数 每。但是连续数字之间存在某种相关性,所以 他们所做的是添加相邻的卡片模10以产生一个 出版的新卡片组。这就是为什么总和 列是均匀的。每张原卡都会被计算两次。