gpt4 book ai didi

algorithm - 如何计算文件的熵?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:12:09 25 4
gpt4 key购买 nike

如何计算文件的熵? (或者我们只说一堆字节)
我有一个想法,但我不确定它在数学上是否正确。

我的想法是:

  • 创建一个包含 256 个整数(全为零)的数组。
  • 遍历文件及其每个字节,
    递增数组中的相应位置。
  • 最后:计算数组的“平均”值。
  • 用零初始化一个计数器,
    对于数组的每个条目:
    添加条目的差异到柜台“平均”。

好吧,现在我卡住了。如何以这种方式“转换”计数器结果所有结果都在 0.0 和 1.0 之间?但我敢肯定,无论如何,这个想法是不一致的......

我希望有人有更好更简单的解决方案?

注意:我需要整个过程来对文件内容做出假设:
(纯文本、标记、压缩或某些二进制文件,...)

最佳答案

  • At the end: Calculate the "average" value for the array.
  • Initialize a counter with zero, and for each of the array's entries: add the entry's difference to "average" to the counter.

通过一些修改,您可以获得香农熵:

将“平均”重命名为“熵”

(float) entropy = 0
for i in the array[256]:Counts do
(float)p = Counts[i] / filesize
if (p > 0) entropy = entropy - p*lg(p) // lgN is the logarithm with base 2

编辑: 正如 Wesley 提到的,我们必须将熵除以 8 才能在 0 范围内调整它。 . 1(或者,我们可以使用以 256 为底的对数)。

关于algorithm - 如何计算文件的熵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/990477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com