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实现模拟掷骰子数据分析的更多相关文章

  1. Python Tkinter小实例——模拟掷骰子

    什么是Tkinter? Tkinter 是 Python 的标准 GUI 库.Python 使用 Tkinter 可以快速的创建 GUI 应用程序. 由于 Tkinter 是内置到 python 的安 ...

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

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

  3. Python 使用matplotlib模块模拟掷骰子

    掷骰子 骰子类 # die.py 骰子类模块 from random import randint class Die(): """骰子类""&quo ...

  4. python学习之掷骰子游戏

    """ 通过学习的python知识,写一个简单的python小游戏 游戏名字:掷骰子比大小 游戏规则: 1.玩家可以选择玩掷几个骰子游戏(默认3个) 2.玩家可以设置双方 ...

  5. Pygal之掷骰子

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

  6. python-模拟掷骰子,两个筛子数据可视化

    """ 作者:zxj 功能:模拟掷骰子,两个筛子数据可视化 版本:3.0 日期:19/3/24 """ import random impo ...

  7. LeetCode 1223. 掷骰子模拟 Dice Roll Simulation - Java - DP

    题目链接:1223. 掷骰子模拟 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数. 不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 i 的次数不能超过 rollMax[ ...

  8. 【NOIP2012模拟10.31】掷骰子

    题目 太郎和一只免子正在玩一个掷骰子游戏.有一个有N个格子的长条棋盘,太郎和兔子轮流掷一个有M面的骰子,骰子M面分别是1到M的数字.且掷到任意一面的概率是相同的.掷到几.就往前走几步.当谁走到第N格时 ...

  9. pygal之掷骰子 - 2颗面数为6的骰子

    python之使用pygal模拟掷两颗面数为6的骰子的直方图,包含三个文件,主文件,die.py,dice_visual.py,20200527.svg.其中最后一个文件为程序运行得到的结果. 1,d ...

随机推荐

  1. cmd批处理转义字符%的详细解释

    cmd批处理转义字符%的详细解释 在命令行中使用for时不需要双%,这源于命令解释器对命令行与批处理的处理方式不同. 1.%是个ESCAPE字符,通常将之译为转义字符,但也有更形象的译名脱逸字符.逃逸 ...

  2. MySQL exists的用法

    有一个查询如下: 1 SELECT c.CustomerId, CompanyName 2 FROM Customers c 3 WHERE EXISTS( 4 SELECT OrderID FROM ...

  3. spring中BeanPostProcessor之三:InitDestroyAnnotationBeanPostProcessor(01)

    在<spring中BeanPostProcessor之二:CommonAnnotationBeanPostProcessor(01)>一文中,分析到在调用CommonAnnotationB ...

  4. (转) 关于Windows CE和Windows Mobile

    转发自http://www.cnblogs.com/chump/articles/1281955.aspx 一.Windows CE Windows CE是微软的嵌入式操作系统主要的一种,面世于199 ...

  5. Linux 提高操作效率之 tab 命令补全

    最近在使用阿里云 ECS 时,发现 Centos 无法进行 tab 补全,特别影响操作效率,本文简单记录下 Linux 下的 tab 命令补全功能,希望对 Linux 初学者有所帮助. 安装 Linu ...

  6. UML(续)

    活动图 活动图定义 活动图描述了在一个过程中,顺序的/并行的活动及其之间的关系 应用于商业过程.工作流(业务过程).复杂算法的建模 活动图是顶点和弧的集合 活动节点 动作 流 对象值 注解和约束等 建 ...

  7. icepdf和pdfbox转pdf文档为图片

    icepdf转pdf文档为图片 首先导入icepdf jar包或maven pdfPath为pdf文件路径.pdfimgpsth为图片保存的路径 public static void icePdfIm ...

  8. 今天我们来谈谈jquery,

    ---恢复内容开始--- 首先从jquery的两种写法开始: 1.$(document).ready(function(){}); 首先我们的jquery是用来操作DOM节点的,所以必须等到文档加载完 ...

  9. vue-element-admin执行npm install 报错

    如果你出现这类报错: 那么恭喜你,因为这个问题很好解决. ----------------------- 解决方法: git config --global url."https://&qu ...

  10. PHP-fpm 远程代码执行漏洞(CVE-2019-11043)复现

    简介 9 月 26 日,PHP 官方发布漏洞通告,其中指出:使用 Nginx + php-fpm 的服务器,在部分配置下,存在远程代码执行漏洞.并且该配置已被广泛使用,危害较大. 漏洞概述 Nginx ...