本篇文章给大家分享的内容是关于python知识分解析掷骰子游戏 ,有着一定的参考价值,有需要的朋友可以参考一下。最近学习了点统计学及python知识,试着分析下掷骰子游戏。骰子按标准6面,分析一次投1颗、2颗、3颗、4颗,投掷10、100、1000、10000次时的结果。使用工具

Jupyter Notebook 分析利器

matplotlib、pygal 可视化包

1、猜次数1-6中每个数字出现的次数# 导入包

import pygal

import numpy as np

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签

plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号

from random import randint# 利用随机数据模拟掷骰子

# 每次显示1-6中的一个数

num_sides = 6 # 骰子的6个面

def getData(N, times):

"""

定义函数,获取投掷数据

N: 表示一次用几个骰子投

times:表示总共投几次

"""

results = []

for n in range(1,N+1):

for roll_num in range(times):

result = randint(1,num_sides)

results.append(result)

return results# 打印投掷结果

print(getData(1,10)) # 1个骰子掷10次

print(getData(2,5)) # 2个骰子掷5次[2, 2, 2, 2, 1, 6, 4, 4, 5, 5]

[4, 3, 5, 6, 2, 2, 3, 6, 4, 4]# 分析结果# 统计每个数字出现的次数并显示图片

# N: 表示一次用几个骰子投

# data 表示投掷数据def showResult(N, times):

frequencies = [] for value in range(1, num_sides+1):

frequency = getData(N, times).count(value)

frequencies.append(frequency) # 数据可视化

# 本次利用 pygal 生成SVG格式矢量图

hist = pygal.Bar()

hist.title = str(N)+"个骰子掷"+ str(times) +"次的结果"

hist.x_labels = ['1','2','3','4','5','6']

hist.x_title = "点数"

hist.y_title = "出现次数"

hist.add(str(N)+'骰子', frequencies)

hist.render_to_file('1-'+str(N)+str(times)+'.svg') # 储存为矢量图# 一个骰子掷10,100, 1000, 10000次结果分析showResult(1,10)

showResult(1,100)

showResult(1,1000)

showResult(1,10000)

# 2个骰子掷10,100, 1000, 10000次结果分析showResult(2,10)

showResult(2,100)

showResult(2,1000)

showResult(2,10000)

3个骰子、4个骰子就不再截图了。

我们发现在投掷的次数越多,每个数出现的概率越接近,最后趋向于相同。

2、猜大小每次投掷点数和# 每次投掷点数和def getData2(N, times):

"""

定义函数,获取投掷数据

N: 表示一次用几个骰子投

times:表示总共投几次

"""

results = [] for roll_num in range(times):

result = 0

for n in range(1,N+1):

result += randint(1,num_sides)

results.append(result)

return results# 打印投掷结果print(getData2(1,10)) # 1个骰子掷10次print(getData2(2,5)) # 2个骰子掷5次[4, 3, 6, 2, 5, 4, 5, 3, 6, 2]

[6, 10, 5, 8, 7]# 分析结果# 统计数字和出现的次数并显示图片

# N: 表示一次用几个骰子投

# data 表示投掷数据def showResult2(N, times):

frequencies = [] for value in range(N, N*num_sides+1):

frequency = getData2(N, times).count(value)

frequencies.append(frequency) # 数据可视化

# 本次利用 matplotlib 生成图片

x_num = N*num_sides+1-N

idx = np.arange(x_num)

width = 0.5

sn = str(N)

sm = str(times)

x_labels = [str(n) for n in range(N, N*num_sides+1)] # X轴刻度

plt.bar(idx, frequencies, width, color='red', label=sn+'个骰子')

plt.xlabel('点数和')

plt.ylabel('出现次数')

plt.title(sn+'个骰子投掷'+ sm +'次的结果')

plt.xticks(idx, x_labels)

plt.legend() # 显示图例

plt.show()

1颗骰子猜大小没多大意义,我们直接来分析两骰子的情况。# 2个骰子掷10,100, 1000, 10000次结果分析showResult2(2,10)

showResult2(2,100)

showResult2(2,1000)

showResult2(2,10000)

# 3个骰子掷10,100, 1000, 10000次结果分析showResult2(3,10)

showResult2(3,100)

showResult2(3,1000)

showResult2(3,10000)

# 4个骰子掷10,100, 1000, 10000次结果分析showResult2(4,10)

showResult2(4,100)

showResult2(4,1000)

showResult2(4,10000)

从上面几图中我们可以看到,当投掷次数足够多时,出现大/小点数出现的概率基本相同,点数大小呈现正态分布的特点。

相关推荐:

python骰子游戏分析_python知识分解析掷骰子游戏相关推荐

  1. python编写程序掷骰子游戏规则_Python Tkinter实例――模拟掷骰子

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

  2. python骰子游戏分析_python 用python写一个骰子游戏

    import random class Game: def __init__(self,player1,player2): self.player1=player1 self.player2=play ...

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

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

  4. python获取游戏数据_Python 爬取 3 万条游戏评分数据,原来程序员最爱玩的游戏竟然是.........

    原标题:Python 爬取 3 万条游戏评分数据,原来程序员最爱玩的游戏竟然是...... 作者 |量化小白H 责编 | 胡巍巍 本文爬取了豆瓣游戏网站上所有可见的游戏评分数据进行分析,全文包括以下几 ...

  5. 掷骰子python代码_通过构建一个简单的掷骰子游戏去学习怎么用 Python 编程

    不论是经验丰富的老程序员,还是没有经验的新手,Python 都是一个非常好的编程语言. Image by : opensource.com Python 是一个非常流行的编程语言,它可以用于创建桌面应 ...

  6. 如何用python进行相关性分析_Python 数据相关性分析

    概述 在我们的工作中,会有一个这样的场景,有若干数据罗列在我们的面前,这组数据相互之间可能会存在一些联系,可能是此增彼涨,或者是负相关,也可能是没有关联,那么我们就需要一种能把这种关联性定量的工具来对 ...

  7. python歌词图表分析_Python可视化图分析毛不易的《入海》,看看听歌的人都在想些什么...

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 欢迎关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不 ...

  8. python掷两个骰子的和_python之pygal:掷两个不同的骰子并统计大小出现次数

    代码示例: # 掷两个不同的骰子并统计大小出现次数 import pygal from die_class import Die die = Die(6) # 实例化一个六面的骰子对象 die_10 ...

  9. python投掷骰子实验_Python小程序--模拟掷骰子

    案例描述 · 通过计算机程序模拟抛掷骰子,并显示各点数的出现次数及频率 · 比如,抛掷2个骰子50次,出现点数为7的次数是8,频率是0.16 版本1.0 1.0功能:模拟抛掷1个骰子,并输出其结果 如 ...

  10. python程序内存分析_python 如何测量运行中的程序内存 -- Valgrind

    介绍 通常我们可以用python profiler去分析应用程序中哪个模块被多次调用和那个程序部分运行的速度较为缓慢,但是并不能够准确给出我们应用程序在运行中在内存中占用的大小. 比如说在金融数据中会 ...

最新文章

  1. 国内第一部IT治理综合图书问世
  2. cross-entropy(交叉熵)是什么?用了表征什么东西?
  3. 贴一个CMemDC 代码,这东西真不错噢,短小精悍,可谓极品
  4. 华为云classroom应用_华为任正非:将来所有应用都会长在云土地上,但现在还不是...
  5. sql2008能否打开mysql数据库_SQL Server 2008通过LinkServer访问MySQL数据库
  6. vim使用zsh_使用zsh,坚固的DevOps工具,Python库,vim,shell dotfile,Linux命令等来提高生产力
  7. error C2039: “type”: 不是“cv::DataTypeT”的成员 解决办法
  8. Bokeh 借力其他库
  9. JavaScript变量、属性、函数、方法的区别(1)
  10. 机器学习——周志华(1)
  11. rational rose mysql_用Rational Rose来建立数据库表
  12. 一文说透所有期权基本交易策略
  13. coreldraw橙子怎么画_cdr怎么画一杯橙汁?CorelDRAW简单绘制的一杯满满的橙汁教程...
  14. ES6最详细/易懂教程
  15. JavaScript实现页面动态添加图片
  16. 计算机程序设计员二级证书,大厂计算机程序设计员职业资格证书
  17. 华为颇无奈,徕卡或离它而去而与小米合作
  18. 计算机辅助英语词汇教学,计算机与网络辅助大学英语词汇教学
  19. 与计算机应用相关的公告,2015全国大学生数学建模与计算机应用竞赛报名通知...
  20. 丁小平微积分研究成果刍议

热门文章

  1. FAT文件系统详解(二)
  2. 频域采样与恢复matlab实验,实验二 时域采样与频域采样及MATLAB程序
  3. python毕业论文参考文献格式范例_毕业论文参考文献规范格式及范例
  4. 会计计算机二级考试试题,计算机二级考试真题-Word-小刘-会计电算化节节高升...
  5. ubuntu linux ftp命令的使用
  6. tcl电视显示服务器异常1500,TCL电视机使用常见故障及维修方法
  7. 某智能化小区网络规划及设计
  8. mb778cn 计算机故障或繁忙,松下 KX-MB778CN驱动
  9. Wireshark 用户使用手册 ———— 文件处理
  10. 在IDEA中如何使用eclipse快捷键