7.01串的熵 - 蓝桥云课 (lanqiao.cn)
问题描述
对于一个长度为n的01串S=12223...an,香农信息熵的定义为 H(S)=-Znp()log2(p()),其中p(0),p(1)表示在这个01 中0和1出现的占比。
比如,对于S=100来说,信息 H(S)-l0g2(请)-号l0g2(3)-号lg2(3) = 1.3083
对于一个长度为23333333的01串如果其信息熵为11625907.5798,且0出现次数比1少那么这个01串中
0出现了多少次?
import os
import sys
import math
# 请在此输入您的代码
#x为总,i为0出现的次数,j为1出现的次数
x=23333333
for i in range(10000000,x//2): #0比1少,肯定0小于总数一半,为了减少计算量从一个较大值开始
j=x-i
if round((j/x)* (math.log2(j/x))*j+(i/x)*(math.log2(i/x)*i),4) == -11625907.5798: #*i和j是因为i*i=-1 是题目公式的变式
print(i)
break