用熵来评价整个随机变量

平均的信息量,而平均最好的量度就是随机变量的期望

,即熵的定义如下:

计算字符的信息熵,参考代码如下:

package sk.ann;

import java.util.Scanner;

public class InfoEntropy {

public static double Entropy(String str) {

double H = .0;

int sum = 0;

int[] letter = new int[26];//26个字符

str = str.toUpperCase(); // 将小写字母转换成大写

for (int i = 0; i < str.length(); i++) { // 统计字母个数

char c = str.charAt(i);

if (c >= 'A' && c <= 'Z') {

letter[c - 'A']++;

sum++;

}

}

//计算信息熵,将字母出现的频率作为离散概率值

for (int i = 0; i < 26; i++) {

double p = 1.0 * letter[i] / sum;//单个字母的频率

if (p > 0)

H += -(p * Math.log(p) / Math.log(2));// H = -∑Pi*log2(Pi)

}

return H;

}

public static void main(String[] args) {

System.out.println("请输入字符串:");

Scanner scan = new Scanner(System.in);

String str = scan.next();

double H = Entropy(str);

System.out.printf("%4.2f\n", H);

}

}

执行结果:

请输入字符串:

are you ok!yes i am ok!

1.58

java计算信息熵_Java计算文本字符的信息熵相关推荐

  1. java 计算九宫格_Java计算手机九宫格锁屏图案连接9个点的方案总数

    (一)问题 九宫格图案解锁连接9个点共有多少种方案? (二)初步思考 可以把问题抽象为求满足一定条件的1-9的排列数(类似于"八皇后问题"),例如123456789和9876543 ...

  2. java 递归编译_java计算x^n的递归方法?求高手给个算法最佳的 最好能编译通过 本人处于java初学者时期^^...

    java计算x^n的递归方法?求高手给个算法最佳的 最好能编译通过 本人处于java初学者时期^^ 关注:193  答案:4  mip版 解决时间 2021-02-03 20:14 提问者西伯利亚狼 ...

  3. java 间隔分钟_java 计算两个 日期时间 相间隔多少天小时分钟 等

    1.时间转换data默认有toString() 输出格林威治时间,比如说Date date = new Date(); String toStr = date.toString(); 输出的结果类似于 ...

  4. java 周次_JAVA计算学校学期周次

    JAVA计算学校学期周次 2020-09-09 / 0 评论 / 313 阅读 / 正在检测是否收录... 09/09 package com.zs.create.test; import java. ...

  5. java 月份间隔_java计算两个日期之间相隔的月份(向下取整)

    最近需求里面有个需要计算两个日期之间相隔的月份,写起来还挺繁琐,需要将各种情况都要考虑到,写了一个作为以后自己的工具吧. //获取哪一天 public static int getDay(Date d ...

  6. java计算工龄_java计算工龄

    计算工龄原则:若是2000-10-12作为开始工作时间,则到下一年的2001-10-13算为一年.有个bug,不满一年的工龄是错误的. import java.util.Date; import ja ...

  7. java 天数计算日期_Java 计算日期间天数与日期推算等操作

    package com.yh.emmm.pattern; import java.time.LocalDate; /** * 计算两个日期之间的天数 * * @author 枫茗丿love */ pu ...

  8. java 计算时差_java计算时间差的几种方法

    用JAVA计算日期,时间差的几种方法 1. 手工计算 2.采用一个三方的jar包(Joda time library) 3. 利用TimeUnit类(java.util.concurrent 包中) ...

  9. java计算平均值_Java计算平均成绩

    编写一个程序,根据用户输入的总人数和总成绩计算平均成绩.要求程序能够处理总人数或者总成绩不是数字时的情况. 根据题目要求得知,在程序中需要对多种异常情况进行不同的处理.此时就用到了在<Java ...

  10. java 今天 昨天_java计算今天,明天,后天,昨天,前天方法

    网上找了一下,方法基本都有bug,自己写了一下,代码挺简单的.供大家使用 使用java计算今天,明天,后天,昨天,前天方法,关键是要知道所在的时区,如果是深圳,所在时区时8,系统初始时间是1970-0 ...

最新文章

  1. python从右向左第三个_Python字符串操作,通过查找右括号到左括号来删除内容
  2. 全球首家!B站上线“杜比视界”给UP主用,“观众眼睛要被养刁了”
  3. TCP/IP的四元组 五元组 七元组
  4. vue 原型设计 拖拽_Vue 也能实现拖拽了 (vue-dragging)
  5. 期末Java面向对象程序设计复习稳过不挂指南(更新中)
  6. wxWidgets:wxRichTextHTMLHandler 类用法
  7. python print用法不换行_python3让print输出不换行的方法
  8. C语言printf()、sprintf()、vsprintf() 的区别与联系
  9. 进程间通信方式_第四十九期-Linux内核中的进程概述(4)
  10. java把含小数点的数字字符串转换为int类型
  11. ZUST蓝桥杯校内选拔赛(java,c)安吉校区
  12. 关于单细胞批次矫正那些事(二) KBET 用于单细胞批次矫正结果的评估
  13. c语言 json_dumps,关于json.dumps中的参数,例如ensure_ascii
  14. 不用编程实现PLC之间通讯-西门子与三菱以太网实时通讯
  15. 知乎高赞回答!财务小白快速上手报表分析(内含公式+模板)
  16. 超强 | 保险单据在线OCR,秒速识别保单信息
  17. python更改ip地址_用Python更改IP地址(转)
  18. 2020-12-06 高等数学:常用积分公式
  19. 写给20年后的自己:免费的午餐最贵
  20. Linux下可以给视频换脸吗,视频AI换脸软件教程 看这里

热门文章

  1. zookeeper集群节点为什么是奇数个
  2. 35岁,程序员过不去的坎?
  3. 霍夫线变换,霍夫圆变换
  4. Amoeba 实现Mysql的读写分离
  5. 终于有机会获得百度SEO的邀请码了
  6. 分析匿名页(anonymous_page)映射
  7. java的split的正则_Java正则表达式之split()方法实例详解
  8. 宋宝华: 一图理解终端、会话、 进程组、进程关系
  9. 深入解读Linux进程调度Schedule
  10. 编码顺序、frame_num和POC