在我的程序中,我进行了 1000 次掷 50 个骰子的试验并计算了香农熵。
我能够以图形方式绘制结果。这里是:
但我想要的是绘制这些数据的单个概率曲线(如二项式概率分布曲线)。像 x 轴上的 0 到 6 缩放,最可能的点将获得最高峰值(像这里 2.55 左右是最可能的)。
这是我的程序:
#Entropy in dice
import math
import pylab
import random
import numpy as np
def rollDie():
"""Returns a random int between 1 and 6"""
return random.choice([1,2,3,4,5,6])
def rollN(roll,trial):
result = []
entropy=[]
c=[1,2,3,4,5,6]
p=[0,0,0,0,0,0]
for a in range(trial):
s=0;P=0
for i in range(roll):
x=rollDie()
result.append(x)
for j in range(6):
if(j+1==x):
p[j]+=1
break
for k in range(6):
p[k]=p[k]/roll
P+=p[k]
if(p[k]!=0):
s+=-p[k]*math.log(p[k],2)
entropy.append(s)
p=np.linspace(0,10,trial)
pylab.plot(p,entropy,'*')
print(entropy)
rollN(50,1000)
如果可以,请帮忙。谢谢。