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. 聊一聊深拷贝和浅拷贝(JS)

    在 JS 中数据类型分为值类型和引用类型,对于值类型,变量中存放的是具体的值,而对于引用类型,变量中存放的是地址. 对于值类型: const a = 3; let b = a; b = 4; cons ...

  2. 使用Network Emulator Toolkit工具模拟网络丢包测试(下)

    用户会在各种网络环境下使用我们的App,PC应用,我们决不能祈求用户的网络环境都是稳定的,因此我们需要模拟出弱网络的情况,用来测试我们的APP在弱网络环境下的表现如何.Network Emulator ...

  3. SpringCloud入门(十): Config 统一配置中心

    SpringCloud Config 简介 在分布式系统中,由于服务组件过多,为了方便争对不通的环境下的服务配置文件统一管理,实时更新,所以出现了分布式配置中心组件.市面上开源的配置中心有很多,360 ...

  4. Hadoop学习笔记(1)-Hadoop在Ubuntu的安装和使用

    由于小编在本学期有一门课程需要学习hadoop,需要在ubuntu的linux系统下搭建Hadoop环境,在这个过程中遇到一些问题,写下这篇博客来记录这个过程,并把分享给大家. Hadoop的安装方式 ...

  5. E. Max Gcd

    单点时限: 2.0 sec 内存限制: 512 MB 一个数组a,现在你需要删除某一项使得它们的gcd最大,求出这个最大值. 输入格式 第一行输入一个正整数n,表示数组的大小,接下来一行n个数,第i个 ...

  6. 功能测试--聊天功能测试&微信聊天

    微信聊天功能测试 发送对象 普通用户.公众号.群.其他特殊主体 衍生功能 转发.语音转文字.删除等 消息发送 单聊.群聊.语音.文字.图片.表情.链接.字符及长度 消息管理 发布通知.接受通知.发文件 ...

  7. golang实现并发爬虫三(用队列调度器实现)

    欲看此文,必先可先看: golang实现并发爬虫一(单任务版本爬虫功能) gollang实现并发爬虫二(简单调度器) 上文中的用简单的调度器实现了并发爬虫. 并且,也提到了这种并发爬虫的实现可以提高爬 ...

  8. [源码分析] 带你梳理 Flink SQL / Table API内部执行流程

    [源码分析] 带你梳理 Flink SQL / Table API内部执行流程 目录 [源码分析] 带你梳理 Flink SQL / Table API内部执行流程 0x00 摘要 0x01 Apac ...

  9. MVC-路由扩展-限制浏览器

    根据路由原理,MVC每次都会走获取路由上下文数据. 自定义Route 调用,以及完善其他代码 运行结果,当在谷浏览器执行时:

  10. JasperReports入门教程(三):Paramters,Fields和Detail基本组件介绍

    JasperReports入门教程(三):Paramter,Field和Detail基本组件介绍 前言 前两篇博客带领大家进行了入门,做出了第一个例子.也解决了中文打印的问题.大家跟着例子也做出了de ...