栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

同时投掷两个不同面的骰子

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

同时投掷两个不同面的骰子

12.4.5 同时投掷两个不同面的骰子

假设我们同时投掷一个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)中输入以下代码可以找到生成的文件位置

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/883627.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号