美文网首页
使用pygal模拟掷骰子

使用pygal模拟掷骰子

作者: Seesouls66 | 来源:发表于2018-08-19 15:12 被阅读0次

    1、pygal_die.py

    from random import randint
    #创建一个类,随机摇动骰子
    class Die():
        def __init__(self,num_sides=6):
            self.num_sides = num_sides
        #创建一个方法,使用randint函数返回随机数
        def roll(self):
            return randint(1,self.num_sides)
    

    2、pygal_die_visual.py
    分析掷一个D6骰子的结果

    from pygal_die import Die
    import pygal
    #创建一个实例
    die = Die()
    #利用for循环,执行一千次掷骰子,并将其存入一个列表中
    results = []
    for roll_num in range(1000):
        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 = "Results of rolling one D6 1000 times"
    hist.x_labels = [1,2,3,4,5,6]
    hist.x_title = "Results"
    hist.y_title = "Frequency of Result"
    hist.add('D6',frequencies)
    """
    add()方法是将一系列的值添加到图标中(传递两个实参,一个给添加值指定的标签,还有一个列表,其中包含将出现的值)
    """
    hist.render_to_file('die_visual.svg')
    """最后将其存储在一个文件中,这种文件的扩展名必须得为.svg,可使用web浏览器打开查看。将鼠标放到任何图形,可看到
    与之对应的数据。
    

    3、pygal_difference_visual.py
    同时掷一个D6和一个D10面骰子,分析掷50000次出现的结果

    from pygal_die import Die
    import pygal
    #创建一个D6实例,一个D10实例
    die_1 = Die()
    die_2 = Die(10)
    #将两者之和存入列表中
    results = []
    for num_roll in range(50000):
        result = die_1.roll() + die_2.roll()
        results.append(result)
    frequencies = []
    max_result = die_1.num_sides + die_2.num_sides
    """将两面的最大点数相加,模拟实例,而不是使用range(2,17)"""
    for value in range(2,max_result+1):
        frequency = results.count(value)
        frequencies.append(frequency)
    hist = pygal.Bar()
    hist.title = "Result of rolling two D6 dice 1000 times"
    hist.x_labels = [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
    hist.x_title = "Result"
    hist.y_title = "Frequency of Result"
    hist.add("D6+D10",frequencies)
    hist.render_to_file('dice_visual.svg')
    

    相关文章

      网友评论

          本文标题:使用pygal模拟掷骰子

          本文链接:https://www.haomeiwen.com/subject/qypciftx.html