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等。
pygal之掷骰子 - 2颗面数为6的骰子的更多相关文章
- Pygal之掷骰子
python之使用pygal模拟掷骰子创建直方图: 1,文件die.py,源码如下: 1 from random import randint 2 3 class Die(): 4 '''表示一个骰子 ...
- python之pygal:掷一个骰子统计次数并以直方图形式显示
源码如下: # pygal包:生成可缩放的矢量图形文件,可自适应不同尺寸的屏幕显示 # 安装:python -m pip intall pygal-2.4.0-py2.py3-none-any.whl ...
- Python绘制直方图 Pygal模拟掷骰子
#coding=utf-8 from random import randint class Die(): """骰子类""" def __ ...
- python之pygal:掷两个不同的骰子并统计大小出现次数
代码示例: # 掷两个不同的骰子并统计大小出现次数 import pygal from die_class import Die die = Die(6) # 实例化一个六面的骰子对象 die_10 ...
- Python之matplotlib画图
折线图: Matplotlib处理csv文件 这里写两个其他的. 柱状图,柱状图个人喜欢用pygal来画,有两篇文章 - Pygal之掷骰子 和 pygal之掷骰子 - 2颗面数为6的骰子.下面用ma ...
- 掷骰子DApp的实现
前言: DApp前些日子比较火, 这段时间有些低迷. 我也是后知后觉, 现在才接触一些, 这篇博文就当做DApp的初次印象吧. 本文要写的是基于智能合约的博彩游戏DApp—骰子游戏, 来看看它是怎 ...
- Python3 数据可视化之matplotlib、Pygal、requests
matplotlib的学习和使用 matplotlib的安装 pip3 install matplotlib 简单的折线图 import matplotlib.pyplot as plt #绘制简单的 ...
- Python编程:从入门到实践 - pygal篇 - Die
掷骰子 # die.py 骰子类 from random import randint class Die(): """表示一个骰子的类""" ...
- LintCode2016年8月22日算法比赛----骰子求和
骰子求和 题目描述 扔n个骰子,向上面的数字之和为 S .给定 Given n,请列出所有可能的 S 值及其相应的概率. 样例 给定n=1,返回 [ [1, 0.17], [2, 0.17], [3, ...
随机推荐
- [配置]01.IntelliJ IDEA代码格式化与Eclipse保持风格一致
- 红外遥控接收发射原理及ESP8266实现
红外遥控是利用近红外光进行数据传输的一种控制方式.近红外光波长0.76um~1.5um ,红外遥控收发器件波长一般为 0.8um~0.94um ,具有传输效率高,成本低,电路实现简单,抗干扰强等特点, ...
- C语言讲义——冒泡排序(bubble sort)
冒泡排序三步走: 循环 交换 回一手 一个数和其它数比较(循环) 每个数都要做这种比较(再一层循环) 准备工作 #include <stdio.h> void sort(int arr[] ...
- Android source code compile error: “Try increasing heap size with java option '-Xmx<size>'”
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g" ./pr ...
- 2020年的UWP(4)——UWP和等待Request的Desktop Extension
上一篇我们讨论了UWP和Desktop Extension交互中,Desktop Extension执行后立即退出的场景.下图是提到的四种场景分类: 执行后立即退出 等待request,处理完后退出 ...
- Fist—— 团队展示
作业要求 软件工程1班 团队名称 Fist 这个作业的目标 团队合作开发项目,加强团队合作,进一步了解相应岗位. 作业正文 https://www.cnblogs.com/team4/p/137730 ...
- 【NOIP2015模拟11.5】JZOJ8月5日提高组T3 旅行
[NOIP2015模拟11.5]JZOJ8月5日提高组T3 旅行 题目 若不存在第\(k\)短路径时,输出"Stupid Mike" 题解 题意 给出一个有\(n\)个点的树 问这 ...
- charles 常用功能(八)重定向
1.点击鼠标右键 点击保存就保存到桌面上了 效果图 在123.txt中修改 然后另存为 点击红圈处 然后再次发送请求
- webpack系列:webpack小老弟接了个简单活
webpack深入浅出系列:进阶篇 前沿,本篇文章的讲解思路是以webpack的五大核心为线索,以webpack对象为第一视角来讲述(以前记得看过一个文笔非常厉害的技术啊婆写的,非常有趣.然后我就想着 ...
- PHP代码审计分段讲解(1)
PHP源码来自:https://github.com/bowu678/php_bugs 快乐的暑期学习生活+1 01 extract变量覆盖 <?php $flag='xxx'; extract ...