#coding:utf-8
"""
灵活设置筛子个数,比如3个筛子
"""
import numpy as np
import matplotlib.pyplot as plt
#图形标注支持中文
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False
def main():
totaltimes =20000
shaizi_nmb=4
shape1 = int(shaizi_nmb * 6)
rollall_arr = np.empty(totaltimes)
for a in range(shaizi_nmb):
roll1_arr=np.random.randint(1, 7, size=totaltimes)#非np的random包含后面一个值,但np下randint未包含
#numpy的两个直接相加就是对于位置的数相加
rollall_arr +=roll1_arr
#将直方图的数据存储起来,bins代表x坐标,比实际数值个数多1个就好
hist, bins= np.histogram(rollall_arr, bins=range(2,shape1+2))
print(hist)
print(bins)
#可视化#normed=1是归一化看概率
plt.hist(rollall_arr, bins=range(2,shape1+2),density=1,edgecolor="black",rwidth=0.8)
#设置x轴,坐标轴点的显示
tick_labels_num=list(bins)
tick_labels=[]
for i in tick_labels_num:
tick_labels.append("{}点".format(i))
#tick_pos = np.arange(2,shape1+2)+0.5#0.5是为了让文字显示在直方图对应图形的正下方
tick_pos = bins+0.5
plt.xticks(tick_pos,tick_labels)
plt.title("摇{}个筛子的结果分布".format(shaizi_nmb))
plt.xlabel("点数")
plt.ylabel("频次")
plt.show()
if __name__=="__main__":
main()