假设我们同时投掷一个6面骰子和8面骰子,掷5000次,那结果如何呢?如图12-28所示。Jupyter Notebook (Anaconda)
# 导入随机整数
from random import randint
# 导入数据图库
import pygal
# 定义Die类
class Die:
def __init__(self, num_sides=6):
#骰子默认为六个面,也可以自定义面数
self.num_sides = num_sides
def roll(self):
#返回一个1到骰子之间的随机值来模拟人投掷骰子的结果值
return randint(1, self.num_sides)
#默认6个面,输入参数8个面
die_1 = Die();die_2 = Die(8)
res_s = []
#投掷次数
for roll_num in range(5000):
#调用函数roll,产生随机数
res = die_1.roll() + die_2.roll()
#将每次的骰子数值追加进列表末尾
res_s.append(res)
#定义空列表,保存两个骰子总点数的个数
fre_s = []
#得到总点数
max_res = die_1.num_sides + die_2.num_sides
#因为最小值为2,所以随机函数从2开始赋给value值
for value in range(2,max_res + 1):
#计数器
fre = res_s.count(value)
#添加出现的个数到列表末尾
fre_s.append(fre)
#初始化一个柱状图
bar = pygal.Bar()
#设置标题
bar.title = "Figure of Die(程悦)"
#设置x的值
bar.x_labels = ['2','3','4','5','6','7','8','9','10','11','12','13','14']
#x轴的标题
bar.x_title = "Res(Total points value set)"
#y轴的标题
bar.y_title = "Fre(The result of frequencies)"
#添加y轴参数
bar.add('D6:D8',fre_s)
#保存文件
bar.render_to_file('Die_figure_two_dif_sides.svg')
Jupyter Notebook (Anaconda)中输入以下代码可以找到生成的文件位置



