zoukankan      html  css  js  c++  java
  • pygal之掷骰子 2颗面数为6的骰子

    python之使用pygal模拟掷两颗面数为6的骰子的直方图,包含三个文件,主文件,die.py,dice_visual.py,20200527.svg。其中最后一个文件为程序运行得到的结果。

    1,die.py,原码如下:

     1 from random import randint
     2 
     3 class Die():
     4     '''表示一个面数为6的骰子的类'''
     5     def __init__(self,num_sides = 6):
     6         #初始化骰子的面数属性,骰子的默认面数为6
     7         self.num_sides = num_sides
     8 
     9     def roll(self):
    10         #返回一个位于1和骰子面数之间的随机整数值,可以是1,也可以是num_sides,也可以是这两者之间的任意整数值
    11         return randint(1,self.num_sides)

    2,dice_visual.py,原码如下:

     1 from die import Die
     2 
     3 import pygal
     4 
     5 die_1 = Die() #实例化第一个骰子
     6 die_2 = Die() #实例化第二个骰子
     7 
     8 #创建空列表,用以存储掷100次返回的值
     9 results = []
    10 for roll_number in range(100): #掷骰子100次
    11     result = die_1.roll() + die_2.roll() #掷骰子两颗的点数
    12     results.append(result) #将点数结果存储为列表
    13 #print(results) #查看结果,结果都是预期的值
    14 
    15 #创建空列表,用以分析results里的结果用的
    16 
    17 frequencies = []
    18 max_numbers = die_1.num_sides + die_2.num_sides #掷两颗骰子的最大点数值
    19 for value in range(2,max_numbers + 1 ):
    20     frequency = results.count(value) #计算每个value值在results里出现的次数;
    21     frequencies.append(frequency) #将每个value值在results里出现的次数存储为列表;
    22 #print(frequencies) #可以试着查看结果;
    23 
    24 '''对结果进行可视化'''
    25 hist = pygal.Bar() #创建条形图,并将其结果存储在hist中
    26 
    27 hist.title = "Results of rolling two D6 100 times" #设置直方图的标题
    28 hist.x_labels = ['2','3','4','5','6','7','8','9','10','11','12'] #设置脂肪图的可能的x轴的值
    29 hist.x_title = "Results" #设置直方图x轴的标题
    30 hist.y_title = "Frequency of Result" #设置直方图y轴的标题
    31 
    32 hist.add('D6+D6',frequencies) #使用add()函数将值D6+D6和列表frequencies添加到可视化的直方图中
    33 
    34 #在当前文件夹下保存名为20200527.svg切后缀必须为svg的文件
    35 hist.render_to_file('20200527.svg')

    3,20200527.svg,程序运行得到的结果。

    要查看pygal生成的图片,应该使用浏览器打开,或者支持svg格式的软件。上图是程序运行结果的一种形式,并不是所有结果。要查看更多结果,可以尝试增大掷骰子的次数。比如说1000,10000等。

  • 相关阅读:
    【转】微服务架构模式简介
    大话微服务
    Howto: 在ArcGIS10中将地图文档(mxd文档)批量保存到之前版本
    在Google Maps中导出KML文件
    ASP.NET(c#) 日期选择控件的另一种实现方法
    asp.net中的时间日期选择控件
    JAVA实现Excel导入/导出【转】
    将Gridview中的数据出到excel或word中
    asp.net导出excel并弹出保存提示框
    在ASP.NET中将GridView数据导出到Word、Excel
  • 原文地址:https://www.cnblogs.com/mafu/p/12971866.html
Copyright © 2011-2022 走看看