使用python实现模拟掷骰子数据分析
Data:2020/4/8
主题:模拟实现掷骰子数据分析
编译环境:pycharm
库:pygal
说明:
code 1:创建一个掷骰子类对象,类方法获得掷骰子随机数1-6,默认6个面,模拟20次将结果(每次点数、每面出现的频次)打印。
code 2:对code代码的扩展,只要是为了将获取的数据图形可视化,而不仅仅只是将数据打印出来。(显示类型:直方图、百分比图
圆环图,水平直方图、折线图)
注意:这里我只生成一个文件:'die_visual.svg',所以现在这段代码2,生成图形是最后一次更新的数据图形,你们再做的时候,如果同
时查看各种图形显示,可以生成不同的.svg文件。
#----------------------------------------------------------------------------------------------------------------
code 1:
import pygal
from random import randint class Die(): #表示一个掷筛子的类
def __init__(self, num_sides =6):
self.num_sides = num_sides
def roll(self):
return randint(1, self.num_sides) #返回值:1-6之间的随机数(任何整数) die =Die() #实例化
results = []
for roll_num in range(20): #含义:从0-20依次取值,取20次,因此执行20次赋值
result = die.roll()
results.append(result)
print(results) frequencies = []
for value in range(1,die.num_sides+1): #现在值得范围1-6
frequency = results.count(value) #计算列表中value出现的次数
frequencies.append(frequency) #将次数添加到列表中
print(frequencies)
#--------------------------------------------------------
结果:
[3, 6, 5, 6, 1, 6, 4, 3, 1, 5, 2, 3, 2, 5, 3, 6, 1, 2, 6, 6] #20次模拟出现的点数值
[3, 3, 4, 1, 3, 6] #点数依次出现的次数
#--------------------------------------------------------
#code 2:
import pygal
from pygal import * #导入模块中的所有类
from random import randint class Die(): #表示一个掷筛子的类
def __init__(self, num_sides =6):
self.num_sides = num_sides
def roll(self):
return randint(1, self.num_sides) #调用库randint()方法;返回值:1-6之间的随机数 die =Die() #实例化
results = []
for roll_num in range(100): #含义:从0-100依次取值,取100次,因此执行100次赋值
result = die.roll()
results.append(result)
#print(results) #打印每次随机数值 frequencies = []
for value in range(1,die.num_sides+1): #现在值得范围1-6
frequency = results.count(value) #计算列表中value出现的次数
frequencies.append(frequency) #将次数添加到列表中
print(frequencies) #打印频次次数 hist = pygal.Bar() #对结果可视化
hist.title = "掷骰子100次每面出现的次数" #设置直方图标题
hist.x_labels =['1','2','3','4','5','6'] #x轴标签
hist.x_title ="结果" #x轴标题
hist.y_title = "频次" #y轴标题
hist.add('D6',frequencies)
hist.render_to_file('die_visual.svg') #生成svg文件 #计算100次 面频次/总次数
pie = Pie()
pie.title = "100次掷骰子比例图" #百分比图
pie.add('D1',frequencies[0]/100)
pie.add('D2',frequencies[1]/100)
pie.add('D3',frequencies[2]/100)
pie.add('D4',frequencies[3]/100)
pie.add('D5',frequencies[4]/100)
pie.add('D6',frequencies[5]/100)
pie.render_to_file('die_visual.svg') #生成svg文件:生成同一个文件(只显示一个) circle = Pie(inner_radius =0.6) #圆环图
circle.title = "100次掷骰子比例图"
circle.add('D1',frequencies[0])
circle.add('D2',frequencies[1])
circle.add('D3',frequencies[2])
circle.add('D4',frequencies[3])
circle.add('D5',frequencies[4])
circle.add('D6',frequencies[5])
circle.render_to_file('die_visual.svg') bar =HorizontalBar() #水平条形图
bar.title ='掷骰子条形图'
bar.add('D1',frequencies[0])
bar.add('D2',frequencies[1])
bar.add('D3',frequencies[2])
bar.add('D4',frequencies[3])
bar.add('D5',frequencies[4])
bar.add('D6',frequencies[5])
bar.render_to_file('die_visual.svg') spot =XY(stroke = False) #这部分模拟离散坐标点
spot.title = '散点图'
spot_x =[(3,2),(1,2),(3,8),(5,7),(6,14)]
spot.add('D6',spot_x)
spot.render_to_file('die_visual.svg') line = Line()
line._title="掷骰子折线图"
line.x_labels =map(str,range(1,7)) #range:7为结束的范围
line.add('频次数',[frequencies[0],frequencies[1],frequencies[2],frequencies[3],frequencies[4],frequencies[5]])
line.render_to_file('die_visual.svg')
#结果:
直方图

比例图:

圆环图:

水平条形图:

折线图:

使用python实现模拟掷骰子数据分析的更多相关文章
- Python Tkinter小实例——模拟掷骰子
什么是Tkinter? Tkinter 是 Python 的标准 GUI 库.Python 使用 Tkinter 可以快速的创建 GUI 应用程序. 由于 Tkinter 是内置到 python 的安 ...
- Python绘制直方图 Pygal模拟掷骰子
#coding=utf-8 from random import randint class Die(): """骰子类""" def __ ...
- Python 使用matplotlib模块模拟掷骰子
掷骰子 骰子类 # die.py 骰子类模块 from random import randint class Die(): """骰子类""&quo ...
- python学习之掷骰子游戏
""" 通过学习的python知识,写一个简单的python小游戏 游戏名字:掷骰子比大小 游戏规则: 1.玩家可以选择玩掷几个骰子游戏(默认3个) 2.玩家可以设置双方 ...
- Pygal之掷骰子
python之使用pygal模拟掷骰子创建直方图: 1,文件die.py,源码如下: 1 from random import randint 2 3 class Die(): 4 '''表示一个骰子 ...
- python-模拟掷骰子,两个筛子数据可视化
""" 作者:zxj 功能:模拟掷骰子,两个筛子数据可视化 版本:3.0 日期:19/3/24 """ import random impo ...
- LeetCode 1223. 掷骰子模拟 Dice Roll Simulation - Java - DP
题目链接:1223. 掷骰子模拟 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数. 不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 i 的次数不能超过 rollMax[ ...
- 【NOIP2012模拟10.31】掷骰子
题目 太郎和一只免子正在玩一个掷骰子游戏.有一个有N个格子的长条棋盘,太郎和兔子轮流掷一个有M面的骰子,骰子M面分别是1到M的数字.且掷到任意一面的概率是相同的.掷到几.就往前走几步.当谁走到第N格时 ...
- pygal之掷骰子 - 2颗面数为6的骰子
python之使用pygal模拟掷两颗面数为6的骰子的直方图,包含三个文件,主文件,die.py,dice_visual.py,20200527.svg.其中最后一个文件为程序运行得到的结果. 1,d ...
随机推荐
- floyd最小环&&模板
floyd的核心代码: ;k<=n;k++){ ;i<=n;i++){ ;j<=n;j++){ dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j] ...
- python初学(三)
1.以软科中国最好大学排名为分析对象,基于requests库和bs4库编写爬虫程序,对2015年至2019年间的中国大学排名数据进行爬取,并按照排名先后顺序输出不同年份的前10位大学信息,要求对输出结 ...
- 【Server】Windows系统安装Tomcat服务器
安装Tomcat服务器 Tomcat服务器地址:https://tomcat.apache.org/download-80.cgi 当前版本点选8以上版本,最新的可能不稳定,所以选8或者9版本 直接解 ...
- 微信群里一道六年级数学题,求阴影面积,那我只能用python代码了
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http ...
- L1线性回归
线性回归 主要内容包括: 线性回归的基本要素 线性回归模型从零开始的实现 线性回归模型使用pytorch的简洁实现 代码下载地址 https://download.csdn.net/download/ ...
- ASE project demo:pdf
欢迎使用 pdf ~ 主页面如下,整个app风格一致,保持简约舒适的视觉体验~ 侧边栏打开,可选择打开新的pdf文件,返回主页面,打开本地生词本,登录等操作~ 可以点击侧边栏OpenFile打开新的p ...
- D. Minimax Problem Codeforces 1288D binary_search+二进制
题目大意:n*m的矩阵中,找到两行数,可以形成两个一维数组,数组1的位置i和数组2的位置i去最大构成新数组b的元素b[i],最终目的要使数组b中最小的数尽可能的大 题解: m的范围是(1,8),比较小 ...
- Scrapy学习-(1)
Scrapy框架介绍 Scrapy是一个非常优秀的爬虫框架,基于python. 只需要在cmd运行pip install scrapy就可以自动安装.用scrapy-h检验是否成功安装 Scrapy部 ...
- overload 与override的区别
Override 是重写: 方法名称.参数个数,类型,顺序,返回值类型都是必须和父类方法一致的.它的关系是父子关系Overload 是重载: 方法名称不变,其余的都是可以变更的.它的关系是同一个类 ...
- 从零开始学习docker之docker的安装
一.Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 OverlayFS 类的 Union FS 等技术,对进程 ...