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. 用ASP.NET MVC5 +SQLSERVER2014搭建多层架构的数据库管理系统

    用http://ASP.NET MVC5 +SQLSERVER2014搭建多层架构的数据库管理系统 背景:前段时间,给一家公司做外包(就是图标是朵菊花那家).为了尽快实现交付,网上四处寻找适合中小型企 ...

  2. python3 进程间通信之socket.socketpair()

    python3 进程间通信之socket.socketpair() socket.socketpair()是什么鬼东西? socket.socketpair()函数仅返回两个已经连接的套接字对象,参数 ...

  3. 三、Pycharm2019.3.3的安装

    一:什么是Pycahrm PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动 ...

  4. coding++:jdk1.7 HashMap 的get()和put() 源码

    HashMap的概述:    基于哈希表的 Map 接口的实现.    此实现提供所有可选的映射操作,并允许使用 null 值和 null 键. (除了非同步和允许使用 null 之外,HashMap ...

  5. php.ini配置文件详解(基于5.2.17版本)

    [PHP] ;;;;;;;;;;;;;;;;;;;; About php.ini ;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;; 关于php.ini文件 ;;;;; ...

  6. c++存储区

    全局变量与静态变量区.常量区.局部变量区(栈).动态存储区(堆).自由存储区 1.全局变量与静态变量区->存放全局变量.静态变量,程序运行结束后释放 2.常量区->存放常量 3.局部变量区 ...

  7. Spring Data REST不完全指南(一)

    简介 Spring Data REST是Spring Data项目的一部分,可轻松在Spring Data存储库上构建超媒体驱动的REST Web服务. Spring Data REST 构建在 Sp ...

  8. L12 Transformer

    Transformer 在之前的章节中,我们已经介绍了主流的神经网络架构如卷积神经网络(CNNs)和循环神经网络(RNNs).让我们进行一些回顾: CNNs 易于并行化,却不适合捕捉变长序列内的依赖关 ...

  9. J - Recommendations CodeForces - 1315D

    https://blog.csdn.net/w_udixixi/article/details/104479288 大意:n个数,每个数只能向上加,a[i]+1需要的时间是t[i],求使这n个数无重复 ...

  10. F - Bone Collector

    Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like ...