Как мне найти базу log 2 двойной переменной? - PullRequest
1 голос
/ 30 января 2020

Я пытаюсь вычислить базу log 2 для некоторых двойных чисел, но кажется, что для этого не существует стандартного метода из библиотеки.

Я опробовал этот код, но ошибка возникает.

        double entropy=0;
        for(int i=0; i<26;i++){
            entropy+=-possibilityCounter[i]*log2(possibilityCounter[i]);
        }

ПРИМЕЧАНИЕ: таблица возможностей может содержать двойные переменные, например, 0,00133536

Есть предложения?

Ответы [ 3 ]

8 голосов
/ 30 января 2020

Вы можете вычислить основание журнала 2 из натурального журнала, как это

public double log2(double v) {
    return Math.log(v) / Math.log(2);
}
3 голосов
/ 30 января 2020

Действительно, в java.util.Math у вас есть журналы для базы e и 10.

Однако вы можете использовать следующую формулу:

log2(x) = log(x)/log(2)
1 голос
/ 30 января 2020
double entropy = 0;
for(int i = 0; i < 26; i++){
    entropy += -possibilityCounter[i] * Math.log(possibilityCounter[i]) / Math.log(2);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...