字符串的熵指的是字符串中包含了多少不同的字符和字符出现的频率。以下是一个计算字符串熵的Python函数:
import math
def entropy(s):
freq_dict = {}
for c in s:
if c in freq_dict:
freq_dict[c] += 1
else:
freq_dict[c] = 1
entropy = 0
s_len = len(s)
for freq in freq_dict.values():
p = freq / s_len
entropy -= p * math.log2(p)
return entropy
该函数接受一个字符串作为参数 s
,并返回该字符串的熵值。该函数首先创建一个字典 freq_dict
,用于存储每个字符在字符串中出现的次数。然后,计算每个字符出现的概率,并使用上式计算熵。最后返回熵值。
下面是一个使用该函数的例子:
s = 'hello world'
print(entropy(s)) # 3.1808329877700468
该例子中,字符串 s
中包含了多个重复字符,因此熵值比较低。