使用Pygal模拟掷骰子

使用Pygal模拟掷骰子

使用pygal可以生成矢量图形文件,本文以pygal绘制掷骰子结果的直方图为例进行展示。

安装pygal
pip instlal pygal
创建Die类

创建die.py文件,内容如下,解释见注释。

from random import randint


class Die():
    """一个骰子类"""

    def __init__(self, num_sides=6):
        """初始化,默认骰子为6个面"""
        self.num_sides = num_sides

    def roll(self):
        """返回[1, num_sides]之间的一个随机整数,模拟掷骰子的点数"""
        return randint(1, self.num_sides)

同时,创建die_visual.py文件,用于掷骰子。内容如下,解释见注释。

from die import Die # 导入骰子类


die = Die() # 初始化一个骰子

results = [] # 用于保存每次掷骰子的结果
for roll_num in range(100):
    # 掷100次骰子,并将结果保存至results变量
    result = die.roll()
    results.append(result)


print(results)  # 打印掷100次骰子的结果

执行python die_visual.py效果如下。

$ python die_visual.py
[6, 5, 6, 4, 2, 3, 5, 2, 1, 4, 4, 1, 1, 4, 5, 2, 3, 3, 3, 5, 4, 5, 5, 4, 3, 4, 6, 5, 2, 5, 1, 6, 4, 2, 1, 3, 1, 6, 3, 3, 4, 4, 1, 1, 3, 6, 3, 4, 1, 1, 1, 1, 5, 2, 5, 4, 4, 5, 2, 6, 4, 6, 1, 5, 6, 2, 3, 6, 6, 4, 3, 3, 5, 4, 6, 2, 6, 5, 2, 3, 2, 6, 5, 2, 4, 3, 3, 3, 6, 3, 3, 4, 4, 3, 4, 5, 5, 5, 5, 5]

结果为投掷100次骰子的点数结果。由于是随机出现,故每次出现的结果不会一样。

解析结果

修改die_visual.py如下。

from die import Die # 导入骰子类


die = Die() # 初始化一个骰子

results = [] # 用于保存每次掷骰子的结果
for roll_num in range(100-):
    # 掷1000次骰子,并将结果保存至results变量
    result = die.roll()
    results.append(result)


# 分析结果
frequencies = []
for value in range(1, die.num_sides+1):
    frequency = results.count(value)
    frequencies.append(frequency)

print(frequencies)

执行python die_visual.py效果如下。

$ python die_visual.py
[159, 184, 173, 156, 159, 169]

结果为投掷1000次骰子1-6点分别出现的次数。由于是随机出现,故每次出现的结果不会一样。

绘制直方图

修改die_visual.py如下。

import pygal
from die import Die # 导入骰子类


die = Die() # 初始化一个骰子

results = [] # 用于保存每次掷骰子的结果
for roll_num in range(1000):
    # 掷100次骰子,并将结果保存至results变量
    result = die.roll()
    results.append(result)


# 分析结果
frequencies = []
for value in range(1, die.num_sides+1):
    frequency = results.count(value)
    frequencies.append(frequency)

# 对结果进行可视化
hist = pygal.Bar()
hist.title = "投掷1000次骰子的结果"
hist.x_labels = ['1''2''3''4''5''6']
hist.x_title = "点数"
hist.y_title = "次数"

hist.add('D6', frequencies)
hist.render_to_file("die_visual.svg")

执行完后,打开svg文件,如下图所示。

使用Pygal模拟掷骰子


原文始发于微信公众号(Know Why It):使用Pygal模拟掷骰子

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/276242.html

(0)
python学霸的头像python学霸bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!