Как вычислить энтропию файла? (Или просто сказать кучу байтов)
У меня есть идея, но я не уверен, что она математически корректна.
Моя идея такова:
- Создайте массив из 256 целых чисел (все нули).
- Пройдите через файл и для каждого из его байтов,
увеличьте соответствующую позицию в массиве. - В конце: Вычислите "среднее" значение для массива.
- Инициализировать счетчик с нулем,
и для каждой из записей массива:
добавить разницу в записи к "среднему" счетчику.
Хорошо, теперь я застрял. Как "спроектировать" счетчик результата таким образом что все результаты будут находиться между 0.0 и 1.0? Но я уверен, идея в любом случае несовместима...
Я надеюсь, что у кого-то есть лучшие и более простые решения?
Примечание. Мне нужно все, чтобы сделать предположения о содержимом файла:
(открытый текст, разметка, сжатие или некоторые двоичные,...)