Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的熵计算方法是在奇怪的情况下返回大于1的值。有什么想法吗?_Java - Fatal编程技术网

Java 我的熵计算方法是在奇怪的情况下返回大于1的值。有什么想法吗?

Java 我的熵计算方法是在奇怪的情况下返回大于1的值。有什么想法吗?,java,Java,我的熵计算方法几乎每次都返回正确的数字。但是在一些情况下,例如如果列表是{.3333.3333.3333.3333,0,0}则返回1.584962500621156,这是不正确的 以下是我的熵计算器的代码: private double calcEntropySimple(double[] list){ // Calculate entropy double entropy = 0; for (int i = 0; i < list.length; i++) {

我的熵计算方法几乎每次都返回正确的数字。但是在一些情况下,例如如果列表是
{.3333.3333.3333.3333,0,0}
则返回
1.584962500621156
,这是不正确的

以下是我的熵计算器的代码:

private double calcEntropySimple(double[] list){
    // Calculate entropy
    double entropy = 0;
    for (int i = 0; i < list.length; i++) {
        if(Double.isNaN(list[i])){
            list[i] = 0;
        }
        if (list[i] > 0) {
            entropy -= list[i] * log2(list[i]);
        }
    }
    return entropy; 
}
考虑

let a = log2(.3333) --> -1.5851
let b = a * .3333   --> -0.5823

0 - b - b - b - 0 - 0 = 1.584962500621156
因此,看起来您的代码正按照您的要求执行。

请考虑

let a = log2(.3333) --> -1.5851
let b = a * .3333   --> -0.5823

0 - b - b - b - 0 - 0 = 1.584962500621156

因此,看起来您的代码正按照您的要求执行。

什么是正确答案?什么是正确答案?我想您是对的。我一定是计算熵错了,虽然我是从教科书上取的公式。我想你是对的。我一定是计算熵错了,虽然我是从教科书上取的公式。