Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- "use strict"
- test()
- function test() {
- let testMessage = "abrakadabra";
- let alphabet = GetAlphabetWithFrequency(testMessage);
- let HX = CalculateShannonEntropy(alphabet);
- console.log(HX);
- }
- function GetAlphabetWithFrequency(message) {
- let alphabet = {
- length: 0,
- }
- for (let i = 0; i < message.length; i++) {
- let letter = String(message[i]);
- if ([letter] in alphabet) alphabet[letter] += 1;
- else {
- alphabet[letter] = 1;
- alphabet.length += 1;
- }
- }
- return alphabet;
- }
- function CalculateShannonEntropy(alphabetWithFrequency) {
- let HX = 0;
- let n = alphabetWithFrequency.length;
- for (let letter in alphabetWithFrequency) {
- if ([letter] != "length") {
- let p_i = alphabetWithFrequency[letter] / n;
- HX += p_i * getBaseLog(n, p_i);
- }
- }
- return -HX;
- }
- function getBaseLog(x, y) {
- return Math.log(y) / Math.log(x);
- }
Advertisement
Add Comment
Please, Sign In to add comment