Pygal画廊(基于Pygal分析概率论与数理统计的掷骰子事件)

模拟掷骰子

创建一个骰子类

from random import randint


class Die():
    """表示一个骰子的类"""
#num_sides表示骰子的面数,默认为6面
    def __init__(self, num_sides=6):
        """骰子默认为6面"""
        self.num_sides = num_sides

    def roll(self):
        """返回一个1和骰子面数之间的随机值"""
        return randint(1, self.num_sides)

###################骰子工具#################

from random import randint


class Die():
    """表示一个骰子的类"""

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

    def roll(self):
        """返回一个1和骰子面数之间的随机值"""
        return randint(1, self.num_sides)

######################图形化界面展示###################

import pygal

from die_visual import action

frequencies = action()
# 创建一个条形图
hist = pygal.Bar()
hist._title = "Result of rolling one D6 1000 times"
# 很坐标表示骰子的每面
hist.x_labels = ['1', '2', '3', '4', '5', '6']
hist._x_title = "Result"
hist.y_labels = "Frequency of Result"
# 将数据赋值到具体的条形图
hist.add('D', frequencies)
hist.render_to_file("die_visual.svg")

界面展示

同时掷两个骰子

from die import Die


# 生成数据
def action():
    # 创建两个D6骰子
    die_1 = Die()
    die_2 = Die()
    # 掷几次骰子,并将结果存储在一个列表中
    results = []
    for roll_num in range(1000):
        result = die_1.roll()+die_2.roll()
        results.append(result)
    print(results)
    return get_count_each_side(die_1, die_2,results)


# 分析结果
def get_count_each_side(die_1,die_2, results):
    frequencies = []
    max_num = die_1.num_sides+die_2.num_sides
    # range()方法是左闭右开的函数
    # 取值范围为(最小值+最小值,最大值+最大值)
    for value in range(2, max_num + 1):
        # 统计每个点出现的次数
        frequency = results.count(value)
        # 将每个点出现的次数放入到列表中
        frequencies.append(frequency)
    print(frequencies)
    return frequencies


action()

##############数据展示

from die_visual import action

frequencies = action()
# 创建一个条形图
x_names = []
hist = pygal.Bar()
hist.title = "Result of rolling one D6 1000 times"
# 横坐标表示骰子的每面
#使用range()生成一个list
x_names = list(range(2,13))
#hist.x_labels = ['1', '2', '3', '4', '5', '6','7','8','9','10','11','12']
hist.x_labels = x_names
hist.x_title = "Result"
hist.y_labels = "Frequency of Result"
# 将数据赋值到具体的条形图
hist.add('D6 + D6', frequencies)
hist.render_to_file("die_visual.svg")

扫描二维码关注公众号,回复: 9493860 查看本文章

掷两个不同点数的骰子

# 创建两个不同点数的骰子
die_1 = Die()
die_2 = Die(10)

发布了14 篇原创文章 · 获赞 1 · 访问量 272

猜你喜欢

转载自blog.csdn.net/weixin_38829588/article/details/104544688
今日推荐