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等。

pygal之掷骰子 - 2颗面数为6的骰子的更多相关文章

  1. Pygal之掷骰子

    python之使用pygal模拟掷骰子创建直方图: 1,文件die.py,源码如下: 1 from random import randint 2 3 class Die(): 4 '''表示一个骰子 ...

  2. python之pygal:掷一个骰子统计次数并以直方图形式显示

    源码如下: # pygal包:生成可缩放的矢量图形文件,可自适应不同尺寸的屏幕显示 # 安装:python -m pip intall pygal-2.4.0-py2.py3-none-any.whl ...

  3. Python绘制直方图 Pygal模拟掷骰子

    #coding=utf-8 from random import randint class Die(): """骰子类""" def __ ...

  4. python之pygal:掷两个不同的骰子并统计大小出现次数

    代码示例: # 掷两个不同的骰子并统计大小出现次数 import pygal from die_class import Die die = Die(6) # 实例化一个六面的骰子对象 die_10 ...

  5. Python之matplotlib画图

    折线图: Matplotlib处理csv文件 这里写两个其他的. 柱状图,柱状图个人喜欢用pygal来画,有两篇文章 - Pygal之掷骰子 和 pygal之掷骰子 - 2颗面数为6的骰子.下面用ma ...

  6. 掷骰子DApp的实现

    前言:​ DApp前些日子比较火, 这段时间有些低迷. 我也是后知后觉, 现在才接触一些, 这篇博文就当做DApp的初次印象吧.​ 本文要写的是基于智能合约的博彩游戏DApp—骰子游戏, 来看看它是怎 ...

  7. Python3 数据可视化之matplotlib、Pygal、requests

    matplotlib的学习和使用 matplotlib的安装 pip3 install matplotlib 简单的折线图 import matplotlib.pyplot as plt #绘制简单的 ...

  8. Python编程:从入门到实践 - pygal篇 - Die

    掷骰子 # die.py 骰子类 from random import randint class Die(): """表示一个骰子的类""" ...

  9. LintCode2016年8月22日算法比赛----骰子求和

    骰子求和 题目描述 扔n个骰子,向上面的数字之和为 S .给定 Given n,请列出所有可能的 S 值及其相应的概率. 样例 给定n=1,返回 [ [1, 0.17], [2, 0.17], [3, ...

随机推荐

  1. Unable to locate package python3 错误解决办法

    错误 huny@DESKTOP-N1EBKQP:/mnt/c/Users/Administrator$ sudo apt-get install python3 Reading package lis ...

  2. 15.java设计模式之访问者模式

    基本需求: 电脑需要键盘鼠标等固定的组件组成 现在分为个人,组织等去买电脑,而同一种组件对不同的人(访问者)做出不同的折扣,从而电脑的价格也不一样 传统的解决方法:在组件内部进行判断访问人的类型,从而 ...

  3. Java蓝桥杯练习题——求小数n位后3个数

    求整数除法小数点后第n位开始的3位数 位数不足的补0,如0.125小数第3位后三位:0.12500→500 输入格式:a b n,空格分开,a是被除数,b是除数,n是小数后的位置 输出格式:3位数字, ...

  4. [原理] Android Native内存泄漏检测原理解析

    转载请注明出处:https://www.cnblogs.com/zzcperf/articles/11615655.html 上一篇文章列举了不同版本Android OS内存泄漏的检测操作(传送门), ...

  5. pthread 互斥量

    参考文献: [1] https://computing.llnl.gov/tutorials/pthreads/ 温故知新 在 OS 中,每个进程都独立地拥有: Process ID, process ...

  6. PyQt(Python+Qt)学习随笔:树型部件QTreeWidget中的topLevelItem、indexOfTopLevelItem和takeTopLevelItem方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 获取指定位置顶层项 树型部件QTreeWidget中,通过topLevelItem方法根据位置索引取 ...

  7. PyQt(Python+Qt)学习随笔:QListView的layoutMode属性和batchSize属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 batchSize属性 该属性是在layoutMode属性设置为Batched时,用于控制每个批量的 ...

  8. PyQt(Python+Qt)学习随笔:Qt Designer中部件的快捷菜单策略(contextMenuPolicy)取值及含义

    在Qt Designer中可以设置部件的快捷菜单策略,快捷菜单通过在部件上点击鼠标右键触发. 快捷菜单策略通过枚举类型Qt.ContextMenuPolicy来定义,对应枚举类型取值及含义如下: 通过 ...

  9. Django框架简单认识(一)

    1.Django是什么 Django是一个由python写成的开放源代码的Web应用框架. 2.Django安装 2.1 Django与python版本的安装版本匹配 Django 版本 Python ...

  10. Eclipse配置反编译

    Eclipse配置反编译 ​ 之前用IDEA一直让我很喜欢的点就是,什么东西都自动集成,下载.但是终归是学(po)习(jie)版,在正式企业开发中,要小心版权的问题(公司给你买了当我没说).抛开插件能 ...