RosettaCodeData/Task/Entropy/Ruby/entropy.rb

10 lines
202 B
Ruby

def entropy(s)
counts = Hash.new(0)
s.each_char { |c| counts[c] += 1 }
counts.values.reduce(0) do |entropy, count|
freq = count / s.length.to_f
entropy - freq * Math.log2(freq)
end
end