转自:计算字符串的信息熵(香农熵)_白玉杰的博客-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

计算字符串的信息熵(香农熵)相关推荐

  1. 计算字符串和文件的MD5值

    1 //计算字符串MD5 2 public static string GetStringMd5(string txt) 3 { 4 MD5CryptoServiceProvider md5 = ne ...

  2. 【C 语言】字符串操作 ( strlen 与 sizeof 函数 | 计算 字符串长度 与 内存块大小 )

    文章目录 一.strlen 与 sizeof 函数 二.计算 字符串长度 与 内存块大小 一.strlen 与 sizeof 函数 strlen() 函数的作用是获取字符串大小 , 其原理是 从 内存 ...

  3. 计算字符串的实际长度

    配合使用toCharArray方法和getBytes方法,首先使用toCharArray方法将一个字符串转换成字符数组,然后循环这个字符数组,将每个字符通过getBytes方法转换成字节数组并获取字节 ...

  4. OC特有语法:分类category,给NSString增加方法计算字符串中数字的个数

    1:分类的使用场景:想对一个类,扩充一些功能,而又不改变原来类的模型,也不用继承,这时OC中的特有语法:分类可以做到: 当然分类也是一个类,也需要声明和实现,声明在.h文件中,实现在.m文件中,格式如 ...

  5. es6与java的相似度_计算字符串的相似度-两种解法

    一直不理解,为什么要计算两个字符串的相似度呢.什么叫做两个字符串的相似度.经常看别人的博客,碰到比较牛的人,然后就翻了翻,终于找到了比较全面的答案和为什么要计算字符串相似度的解释.因为搜索引擎要把通过 ...

  6. Java黑皮书课后题第6章:*6.20(计算一个字符串中字母的个数)编写一个方法,使用下面的方法体计算字符串中的字母个数。编写一个测试程序,提示用户输入字符串,然后显示字符串中的字母个数

    6.20(计算一个字符串中字母的个数)编写一个方法,使用下面的方法体计算字符串中的字母个数.编写一个测试程序,提示用户输入字符串,然后显示字符串中的字母个数 题目 题目描述 破题 代码 运行示例 题目 ...

  7. (转)python3 计算字符串、文件md5值

    字符串md5值 import hashlibdef md5_convert(string):"""计算字符串md5值:param string: 输入字符串:return ...

  8. python 字符串去重且相同字符最多出现2次_Python实现计算字符串中出现次数最多的字符示例...

    本文实例讲述了Python实现计算字符串中出现次数最多的字符.分享给大家供大家参考,具体如下: 1. 看了网上挺多写的方法都没达到我所需要的效果,我干脆自己写了个方法共享给大家 ee = 'aa111 ...

  9. PHP | 计算字符串中的单词总数

    Given a string and we have to count the total number of words in it. 给定一个字符串,我们必须计算其中的单词总数. str_word ...

最新文章

  1. Linux目录结构和常用命令
  2. STM32 单片机启动流程
  3. 【系统架构理论】一篇文章精通:Spring Cloud Netflix Eureka
  4. R-CNN家族梳理:从R-CNN到Mask R-CNN
  5. 古代的碎银子是怎么来的?
  6. EFCore-脚手架Scaffold发生Build Failed问题的终极解决
  7. Beer Bill(签到题)
  8. 软件开发为什么失败?
  9. syslog配置及测试
  10. mac安装Homebrew报443
  11. 死锁的预防、避免、检测、解除
  12. android关于 子控件超出父控件范围的注意点
  13. excel 公式 java_Java程序如何调用Excel中的各种公式
  14. WF(Workflow foundation)与Asp.net结合(二)
  15. 美国康奈尔大学BioNB441元胞自动机MATLAB应用
  16. ZLG的CANpro保存的.can文件解析
  17. 微信小程序初体验(上)- 腾讯ISUX社交用户体验设计成员出品
  18. VMware安装windows server 2008 r2详细教程
  19. vba随机抽取人名不重复_excel筛选重复姓名 求出Excel中不重复的人的姓名的VBA代码...
  20. http、https和数字证书的相关知识

热门文章

  1. 五大主流浏览器的内核
  2. winform6、(C#)程序开机启动时读取文件失败
  3. /system/bin/sh: XXX not found
  4. 9.1 Python图像处理之图像数学形态学-二值形态学(腐蚀、膨胀、开启、闭合)
  5. Photoshop初学者必须知道的十课
  6. [附源码]Python计算机毕业设计Django-大学生健康档案管理
  7. flutter 简单设置路由
  8. 11.python解答2020年蓝桥杯省赛python组 寻找2020
  9. 打包后的apk微信分享依然失败
  10. 负债累累只因创业失败,郑州42岁餐饮老板创业之殇