使用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 ...
随机推荐
- Extjs简单的form+grid组合
采用的是Extjs4.2版本 http://localhost:49999/GridPanel/Index 该链接是本地连接,只是方便自己访问,读者无法正常访问. <script src=&qu ...
- DNA sequence HDU - 1560(IDA*,迭代加深搜索)
题目大意:有n个DNA序列,构造一个新的序列,使得这n个DNA序列都是它的子序列,然后输出最小长度. 题解:第一次接触IDA*算法,感觉~~好暴力!!思路:维护一个数组pos[i],表示第i个串该匹配 ...
- D - Catch That Cow BFS
农夫知道一头牛的位置,想要抓住它.农夫和牛都于数轴上 ,农夫起始位于点 N(0<=N<=100000) ,牛位于点 K(0<=K<=100000) .农夫有两种移动方式: 1. ...
- windows编译动态链接库,dll+lib的形式
之前一直在linux上做开发,没怎么关注过windows上如何编译动态链接库.不过一直存疑,为什么windows上的动态链接库是.dll配合.lib使用的,这个又是怎么生成的呢,通过一段时间的查资料和 ...
- Linux常见提权
常见的linux提权 内核漏洞提权 查看发行版 cat /etc/issue cat /etc/*-release 查看内核版本 uname -a 查看已经安装的程序 dpkg -l rpm -qa ...
- redis: 持久化(十二)
RDB配置 RDB 是 Redis 默认的持久化方案.在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中.即在指定目录下生成一个dump.rdb文件.Redis 重启会通过加载d ...
- BIOS时间与系统时间(windows/linux时间同步问题)
写作动机 双系统是不少人喜欢的方式,但安装双系统之后一般会出现两个系统时间不一样的问题,刚开始用双系统的时候也没怎么在意,就是装上后在网上找找相关解决方法,复制粘贴代码完事儿.但是次数多了就有点烦了, ...
- Java 添加、隐藏/显示、删除PDF图层
本文介绍操作PDF图层的方法.可分为添加图层(包括添加线条.形状.字符串.图片等图层).隐藏或显示图层.删除图层等.具体可参考如下Java代码示例. 工具:Free Spire.PDF for Jav ...
- h5前端animate等js特效问题汇总
1.jq中的animate不要重复大量使用,会导致内存溢出或泄漏,很直观的现象就是手机发热太严重: 2.input 的button类型的去掉默认样式并换颜色: -webkit-appearance:n ...
- [Hands-on-Machine-Learning-master] 02 Housing
用到的函数 numpy.random.permutation随机排列一个序列,返回一个排列的序列. >>> np.random.permutation(10) array([1, 7 ...