numpy+plot初试
#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()