【发布时间】:2015-02-09 16:07:22
【问题描述】:
我正在尝试使用以下 Java 函数计算英语的熵
public static void calculateEntropy()
{
for(int i = 0; i < letterFrequencies[i]; i++)
{
entropy += letterFrequencies[i] * (Math.log(letterFrequencies[i])/Math.log(2));
}
entropy *= -1;
}
我使用的公式需要对数基数 2,但 Java 只有自然对数和对数基数 10。我正在尝试使用基数公式的更改来获取 letterFrequencies[i] 的对数基数 2。我不知道我是否正确实施它,因为我期待一个接近 4.18 的答案,而是得到大约 0.028
【问题讨论】:
-
@turbo OP 使用这个公式:en.wikipedia.org/wiki/Logarithm#Change_of_base
-
可能不是重复但与您的情况有关:stackoverflow.com/q/3305059/1065197
-
确保所有其他部分都按预期工作。你可能试图解决错误的问题。我会删除日志部分以检查值是否符合预期。
-
i < letterFrequencies[i]这是正确的吗?不是i < letterFrequencies.length吗? -
应该是 letterFrequencies.length。那是我的问题