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. Yali 2019-8-15 test solution

    T1. 送货 Description 物流公司要用m辆车派送n件货物.货物都包装成长方体,第i件的高度为hi,重量为wi.因为车很小,一辆车上的货物必须垒成一摞.又因为一些不可告人的原因,一辆车上货物 ...

  2. CoProcessFunction实战三部曲之一:基本功能

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  3. Spring与Web环境集成

    1. Spring与Web环境集成 1.1 ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext(sprin ...

  4. JVM 堆中对象分配、布局和访问

    本文摘自深入理解 Java 虚拟机第三版 对象的创建 Java 是一门面向对象的语言,Java 程序运行过程中无时无刻都有对象被创建出来.从语言层面看,创建对象只是一个 new 关键字而已,而在虚拟机 ...

  5. Idea 查找加替换 功能

    本页查找 快捷键:ctr+F 鼠标框选 所需内容 再加快捷键 查找更加方便 替换功能

  6. 异步任务-----django-celery

    异步任务 ---- django-celery   大家的知道celery的使用,网上也有很多的教程.因为最近在使用django来完成项目,无意间发现发现有个东西叫django-celery,比cel ...

  7. 洛谷P3901 数列找不同(莫队水题)

    重温下手感,判断区间是否全是不同的数字有两种做法,一个长度为len的区间不同的数字,参见HH的项链,一种是区间众数,参见蒲公英,是水题没错了.明天搞数据库,然后继续自己的gre和训练计划 #inclu ...

  8. python 保存list,map方法

    1. 保存list import numpy as np a = [1,2,3,4,5] np.save("number.npy", a) k = np.load("nu ...

  9. Ubuntu 16.04 系统基础开发环境搭建

    1.安装 Git sudo apt-get update sudo apt-get install git Do you want to continue? [Y/n] Y git --version ...

  10. CCF统一省选 Day2 题解

    此题解是教练给我的作业,AK了本场比赛的人,以及认为题目简单的人可以不必看 T1 算法一 暴力枚举对信号站顺序的不同排列,然后对代价取\(\min\)即可. 时间复杂度\(O(m! \cdot n)\ ...