赞
踩
转自:计算字符串的信息熵(香农熵)_白玉杰的博客-CSDN博客_字符串的熵
用来计算字符串变化后信息量的变化,如用以检测通信内容是否发生篡改(有可能存在字符串不同,熵相同的情况)。
输入:输入任意一串字符
样例输入:aaaabbcd
输出:计算出字符串的信息熵
样例输出:1.75
信息熵的计算公式为:某一事件出现的概率乘以它的对数形式的结果的负数就是该时间的信息熵,把一个集合里面的所有的事件的信息熵都加起来就行了,就可以得到了总的信息熵了,明白了这一点就很容易做这道题目了,因为计算量很小,所以代码几乎就是直接写出来的没有做一点性能上的优化,不过结果AC了,应该是输入的数据量规模也是不大的:
import math
import collections
inp_str = input()
counter_char = collections.Counter(inp_str)
entropy = 0
for c, ctn in counter_char.items():
_p = float(ctn)/len(inp_str)
entropy += -1 * _p * math.log(_p, 2)
print(round(entropy, 7))
————————————————
版权声明:本文为CSDN博主「白玉杰」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40535327/article/details/104954466
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。