1、使用Pygal模拟掷骰子

1.1 安装Pygal

python -m pip install --user pygal

1.2 创建Die类

from random import randint

class Die():

'''表示一个骰子的类'''

def __init__(self,num_sides=6):

'''骰子默认为6面'''

self.num_sides=num_sides

def roll(self):

'''返回一个位于1和骰子面数之间的随机值'''

return randint(1,self.num_sides)

1.3 掷骰子

from die import Die

#创建一个D6

die=Die()

#掷几次骰子,并将结果存储在一个列表中

results=[]

for roll_num in range(10):

result=die.roll()

results.append(result)

print(results)

输出:

[5, 4, 1, 6, 4, 6, 3, 5, 3, 5]

1.4 分析结果

from die import Die

#创建一个D6

die=Die()

#掷几次骰子,并将结果存储在一个列表中

results=[]

for roll_num in range(20):

result=die.roll()

results.append(result)

print(results)

#分析结果

frequencies=[]

for value in range(1,die.num_sides+1):

frequency=results.count(value)

frequencies.append(frequency)

print(frequencies)

输出:

[1, 2, 4, 2, 1, 1, 6, 2, 3, 3, 3, 4, 3, 5, 1, 3, 6, 2, 2, 6]

[4, 5, 5, 2, 1, 3]

1.5 绘制直方图

直方图是一种条形图,指出了各种结果出现的频率。

import pygal

from die import Die

#创建一个D6

die=Die()

#掷几次骰子,并将结果存储在一个列表中

results=[]

for roll_num in range(1000):

result=die.roll()

results.append(result)

print(results)

#分析结果

frequencies=[]

for value in range(1,die.num_sides+1):

frequency=results.count(value)

frequencies.append(frequency)

print(frequencies)

#对结果进行可视化

hist=pygal.Bar() #创建实例

hist.title="Results of rolling one D6 1000 times." #用于标示直方图的字符串

hist.x_lables=['1','2','3','4','5','6'] #将掷骰子的结果用作x轴的标签

hist.x_title="Result" #给x轴添加标题

hist.y_title="Frequency of Result"

hist.add('D6',frequencies) #用add()函数将一系列的值添加到图表中

hist.render_to_file('die_visual.svg') #将图表渲染为一个SVG文件

输出:

image.png

查看生成的直方图,最简单的方式是使用Web浏览器。

pygal让这个图表具有交互性:如果将鼠标指向该图表中的任何条形,将看到与之相关联的数据。

1.6 同时掷两个骰子

import pygal

from die import Die

#创建两个D6骰子

die_1=Die()

die_2=Die()

#掷骰子多次骰子,并将结果存储在一个列表中

results=[]

for roll_num in range(1000):

result=die_1.roll()+die_2.roll() #计算总点数

results.append(result)

print(results)

#分析结果

frequencies=[]

max_result=die_1.num_sides+die_2.num_sides #最大可能点数

for value in range(2,max_result+1):

frequency=results.count(value)

frequencies.append(frequency)

print(frequencies)

#对结果进行可视化

hist=pygal.Bar() #创建实例

hist.title="Results of rolling one D6 1000 times." #用于标示直方图的字符串

hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12'] #将掷骰子的结果用作x轴的标签

hist.x_title="Result" #给x轴添加标题

hist.y_title="Frequency of Result"

hist.add('D6+D6',frequencies) #用add()函数将一系列的值添加到图表中

hist.render_to_file('dice_visual.svg') #将图表渲染为一个SVG文件

输出:

image.png

图表显示总点数为7的可能性最大,总点数为2或12的可能性最小

1.7 同时掷两个面数不同的骰子

import pygal

from die import Die

#创建一个D6和一个D10的骰子

die_1=Die()

die_2=Die(10) #实参为10,表示有10面

#掷骰子多次骰子,并将结果存储在一个列表中

results=[]

for roll_num in range(50000):

result=die_1.roll()+die_2.roll() #计算总点数

results.append(result)

print(results)

#分析结果

frequencies=[]

max_result=die_1.num_sides+die_2.num_sides #最大可能点数

for value in range(2,max_result+1):

frequency=results.count(value)

frequencies.append(frequency)

print(frequencies)

#对结果进行可视化

hist=pygal.Bar() #创建实例

hist.title="Results of rolling a D6 and a D10 50,000 times." #用于标示直方图的字符串

hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12','13','14','15','16'] #将掷骰子的结果用作x轴的标签

hist.x_title="Result" #给x轴添加标题

hist.y_title="Frequency of Result"

hist.add('D6+D10',frequencies) #用add()函数将一系列的值添加到图表中

hist.render_to_file('different_visual.svg') #将图表渲染为一个SVG文件

输出:

image.png

图表显示:可能性最大的点数有5种,即7,8,9,10,11.

总结:使用matplotlib创建简单的图表;使用散点图来探索随机漫步过程;使用Pygal创建直方图;生成数据集及对其进行可视化。

掷骰子python代码_python模拟掷骰子相关推荐

  1. 掷骰子python代码_Python 使用matplotlib模块模拟掷骰子

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

  2. 投掷骰子的python代码_模拟骰子(Python),掷骰子

    模拟掷骰子实际是抽取(1~6之间的)随机数问题,涉及random模块,后面版本的数据可视化主要应用matplotlib.pyplot模块. 1.0:模拟一个骰子的结果.首先定义roll_dice()函 ...

  3. python 入门学习 模拟投掷骰子

    本节视频学习使用 python语言实现模拟投掷骰子. 本章节涉及到的知识点有: 1. 通过python模拟随机事件,或生成随机数 random 模块 函数 含义 random() 生成一个[0,1.0 ...

  4. 投掷骰子的python代码_Python基础篇——模拟掷骰子小游戏

    写在前面 ↓ 骰子是我们经常能看到的小玩意儿,今天我们来做一个模拟掷骰子过程的文字版小游戏,送给幻想编程岛新接触Python的初学者们~ 注:本教程基于64位windows系统(鼠标右键点击桌面&qu ...

  5. 掷骰子python代码_如何使用python的random模拟掷骰子的数据

    python是一个很有趣的语言,可以在命令行窗口运行.python支持面向对象的编程方法,这篇经验就告诉你,如何使用python的random模块,模拟掷骰子的数据. 工具/原料 windows系统电 ...

  6. 掷骰子Python代码

    Hello,大家好,这一次我给大家带来的是"掷骰子"的Python代码,不说那么多,上代码喽~ # -*- coding:utf-8 -*- # 摇3次骰子,当总数total,3& ...

  7. Python:使用Pygal模拟掷骰子练习题

    来源:<Python编程:从入门到实践> 文章目录 1 1.1 安装Pygal 1.2 Pygal画廊 1.3 创建Die类 1.4 掷骰子 1.5 分析结果 1.6 绘制直方图 1.7 ...

  8. python模拟全部代码_Python模拟登陆实现代码

    下面分享一个使用Python进行网站模拟登陆的小例子. 原理 使用Cookie技术,绕开网站登录验证.要使用到cookielib库.流程: 创建一个保存Cookie的容器,可选的有CookieJar, ...

  9. 用 Python 代码来模拟用核弹射击小行星会,最终能否拯救地球?

    你有没有想过,如果一颗小行星正冲向地球,而人类向它发射了一颗核武器,会发生什么?它会影响小行星的轨迹吗?我们会活下来吗?瓦砾会怎样?您可能听起来很熟悉这种情况.Armageddon 和 Deep Im ...

  10. postman生成python代码_python代码直接生成可执行exe文件

    前言: python中有一个很厉害的库可以直接将写好的python代码打包成可执行的.exe文件,生成好的文件不需要python运行环境和pycharm等IDE就可以直接双击运行,是不是很厉害呢!这样 ...

最新文章

  1. ComplexHeatmap包绘制热图(二)
  2. python绘制动态模拟图-Python 模拟动态产生字母验证码图片功能
  3. 联想微型计算机 m4350q,比超极本便携 评联想M4350q小型台式机
  4. Mat详解-OpenCV
  5. Spring_事务(2)
  6. 博士笔记 | 周志华《机器学习》手推笔记第二章-模型评估与选择
  7. Linux中执行shell脚本的5种方法总结
  8. dfs dtft dft fft
  9. IK分词器原理研磨及源码改造,更适用生产
  10. 为计算机房的电脑安装防火墙和杀毒软件,杀毒软件和防火墙的关系,哪个重要...
  11. 阿里,百度高级程序员力荐2019必看书单—附PDF电子档
  12. JVM--藤原豆腐店自用
  13. 【北交所周报】继北证50指数后,北交所推出融资融券交易细则;新股慧为智能上市当日收涨22.13%,远航精密上市即破发;...
  14. EOS星球秒杀所有的区块链游戏
  15. 安装redis时 提示执行make命令时提示 CC adlist.o /bin/sh: cc: 未找到命令
  16. Android:程序锁功能的简单实现
  17. java-php-python-ssm旅游产品网络销售系统计算机毕业设计
  18. 关于国企、外企、私企(转)
  19. 编译原理学习(到LL1文法部分)
  20. linux支持usb打印机,不用驱动

热门文章

  1. ROS实践1:publisher详解
  2. 网络管理员学习笔记_第三章 局域网技术与综合布线_003_局域网基础03
  3. c语言中专业英文词汇的意思,C语言常见英文词汇表
  4. java list 时间排序_Java collections.sort()根据时间排序list
  5. 阿里云数据库开源发布:PolarDB 三节点高可用的功能特性和关键技术
  6. java调用peopleSoft webservice
  7. 第五次课堂总结——付胤
  8. instantDrag for Maya脚本 (移动模型时沿目标模型移动)
  9. unity Maya中模型动画可能存在的问题总结
  10. 微信公众号ajax500,普通js使用ajax,微信公众号授权(微信网页授权)