如果压缩包含随机数的文件,它会变大

HB *_*AAM 1 .net c# compression random

在此输入图像描述

var file = new FileStream("random.txt", FileMode.Create);
var random = new Random();
for (int i = 0; i < 100000000; i++)
{
     var bytesToWrite = BitConverter.GetBytes(random.Next(int.MaxValue));
     file.Write(bytesToWrite, 0, bytesToWrite.Length);
}
file.Close();
Run Code Online (Sandbox Code Playgroud)

当你只是将一些随机数添加到文本文件然后压缩它变得更大,或者它将保持与文本相同的大小

任何一个知道如何为何会发生?

DGH*_*DGH 6

文本文件倾向于很好地压缩,因为它们反复使用相同的数据.向文件中添加一些随机数会使文件不那么规则,因此大多数压缩算法都会更难以压缩文件.

阅读压缩算法以更好地理解这一点.https://en.wikipedia.org/wiki/File_compression


Yoc*_*mer 5

压缩算法不会向你保证它会变小.

原因很简单,没有足够的唯一值可以生成更小的值.
例:

如果您有10位世界,则可以生成2 ^ 10个值.让我们假设你可以压缩它们.但是,如果你删除一点,你只能拥有2 ^ 9个值.因此,有许多原始值永远无法正确压缩,并解压缩回原始值.

因此,大多数压缩算法都考虑到正常数据不是随机的,并且是重复的,或者背后有一些基本规则.
像文本只使用了一定数量的字符,所以你可以很好地压缩它们.

  • [鸽子原理](http://en.wikipedia.org/wiki/Pigeonhole_principle)! (3认同)