gpt4 book ai didi

java - 在 Java 中以 2 为基数记录 double

转载 作者:行者123 更新时间:2023-11-29 09:29:24 24 4
gpt4 key购买 nike

我正在尝试使用以下 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 的建议进行了优化。

关于java - 在 Java 中以 2 为基数记录 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28414046/

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