模拟掷骰子 | Pygal | 列表解析式

15.4 使用Pygal模拟掷骰子

'''创建一个骰子类die.py'''
from random import randint
class Die():
    '''表示一个骰子的类'''
    def __init__(self,num_sides=6):
        #骰子默认为6面
        self.num_sides=num_sides

    def roll(self):
        #模拟掷骰子
        return randint(1,self.num_sides)
'''模拟同时掷两个骰子,点数之和可能出现的结果die_visual.py'''
from die import Die
import pygal

#分别创建一个6面和10面的骰子
die_1=Die()
die_2=Die(10)

#将投掷结果存储在列表中
results=[]
for roll_num in range(5000):
    result=die_1.roll()+die_2.roll()
    results.append(result)
#上述四行语句以列表解析形式表示为:
#results=[die_1.roll()+die_2.roll() for roll_num in range(5000)]

max_results=die_1.num_sides+die_2.num_sides
#统计各点数出现的次数
frequencies=[]
for value in range(2,max_results+1):
    #统计各点数出现多少次
    frequency=results.count(value)
    frequencies.append(frequency)
#上述四行语句以列表解析形式表示为:
#frequencies=[results.count(value) for value in range(2,max_results+1)]

#对结果进行可视化
#绘制直方图
hist=pygal.Bar()
hist.title="Results of rolling a D6 and D10 5000 times"
#绘制x轴标签
hist.x_labels=list(range(2,max_results+1))
#hist.x_labels=[value for value in range(2,max_results+1)]
#轴标题
hist.x_title="Result"
hist.y_title="Frequency of result"

#为数据frequencies添加数据系列(图例)
hist.add('D6+D10',frequencies)
#保存文件为svg格式
hist.render_to_file('die_visual.svg')

掷骰子

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值