我正在尝试使用以下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的答案,但是却得到了大约.028
最佳答案
问题出在for
的停止状态:i < letterFrequencies[i]
应该是i < letterFrequencies.length
。
此外,我将使用Guava's DoubleMath.log2() method,它已根据@LutzL建议进行了优化。