最近学习了点统计学及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 = 0for 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-Nidx = np.arange(x_num)width = 0.5sn = 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分析掷骰子游戏相关推荐

  1. python编写掷骰子游戏改哪里把第0局变成第一局_Python基础案例练习:掷骰子小游戏...

    前言 骰子是我们经常能看到的小玩意儿,今天我们来做一个模拟掷骰子过程的文字版小游戏,送给新接触Python的初学者们~ 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者 ...

  2. python 赌场掷骰子游戏

    掷骰子是赌场里一种非常流行的游戏.编写这个程序玩这个游戏的变种,如下所示 掷两个骰子.每个骰子有六个面,分别表示值1,2,3,4,5,6.检查两个骰子的和.如果和为2,3,12,你就输了 如果和为7, ...

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

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

  4. python 掷骰子游戏

    掷骰子游戏: ==========掷骰子游戏========= 可选择的参加游戏的角色是:1.貂蝉  2.刘备  3.孙悟空  4.诸葛亮 5.曹操 输入参加游戏的角色是: 1 貂蝉进入游戏-- 貂蝉 ...

  5. Python写掷骰子的游戏

    1.掷骰子游戏规则: A. 基础规则 (1)玩家和机器人各5个筹码. (2)每次随机生成一个2~12的整数,模拟两个骰子相加的得数. (3)玩家输入'大',代表押大. (4)玩家输入'小',代表押小. ...

  6. python 寻找水仙花、寻找“完美数”、 百钱百鸡问题、斐波那契数列、craps掷骰子游戏

    # coding-utf-8 # 寻找水仙花数 import mathfor num in range(100, 1000):num = str(num)a = int(num[0])b = int( ...

  7. python -小游戏-掷骰子游戏

    写的比较简单 # 掷骰子游戏 import randomprint('*' * 40) print(' 欢迎进入皇家游戏厂!') print('*' * 40) gameMoney = 0 name ...

  8. html5游戏 dice掷骰子,使用jQuery实现掷骰子游戏

    本文实例为大家共享了jQuery实现掷骰子游戏的详细代码,供大家参考,详细内容如下 直接新版建一个html网页,需要在head中引入jquery,js,一些css代码以及js代码,如下: .wrap{ ...

  9. R语言简单应用掷骰子游戏

    .练习8-1 在掷骰子游戏中,玩家(射手)准备掷出两个骰子,每个骰子都有六个面.如果掷出的总数为2.3或12,则该射手失败.如果总数是7或11,则对手(他)胜出.如果是其他任何得分,那么此得分将变成新 ...

  10. java骰子_Java实现的简单掷骰子游戏示例

    本文实例讲述了Java实现的简单掷骰子游戏.分享给大家供大家参考,具体如下: 要求: 掷两个骰子,每个骰子有六面, 分别为1.2.3.4.5.6.检查这两个骰子的和. 如果为2.3或12你就输了:如果 ...

最新文章

  1. SAP MM 带有Return标记的STO,不能创建内向交货单?
  2. 连续举办了十七年的韩国大学生智能车竞赛谢幕了
  3. 将matlab的.m文件打包为独立可执行程序.exe —— 基于Matlab R2015b
  4. MVC中helper的用法。
  5. MySQL之父与企鹅的故事
  6. java薪资年龄交叉表_巧用参数实现交叉表行列互换
  7. Unity在运行时(代码中)设置材质的渲染模式(RenderingMode)
  8. 我的博客面貌焕然一新
  9. 弱网络环境下最优调度和优化传输层协议方案
  10. 小D课堂 - 新版本微服务springcloud+Docker教程_5-07 断路器dashboard监控仪表
  11. Java基础语法结构
  12. 智能汽车“增量部件”争夺战(一):以华为海思为样榜,比亚迪蔚来们的漫漫造芯路
  13. MySQL 管理之道读书总结
  14. 目标跟踪VOT2016的配置
  15. 高盛发布区块链报告:从理论到实践(中文版)七
  16. 递推和递归:一个自下而上,一个自上而下
  17. java emoji表情 乱码_java 微信昵称带有emoji 表情乱码
  18. ELRepo软件仓库源 提供的硬件驱动 centos
  19. PS教程:合成复古人物风格海报的技巧
  20. 基于Arduino的土壤湿度检测

热门文章

  1. 基于单片机的功放protues_基于单片机的功放毕业设计
  2. python you-get ffmpeg 下载哔哩哔哩视频
  3. 基于32×32点阵LED模块的书写显示屏
  4. Py 实现导线测量的内业计算
  5. 寻找“最好”(2)——欧拉-拉格朗日方程
  6. 这三个究极骚气的炫酷底部导航栏,只有经常逛GitHub划水的人才知道!
  7. android 高清播放器,高清播放器我要下载-高清播放器 安卓版v9.6.2-PC6安卓网
  8. python 邮件分类_python_NLP实战之中文垃圾邮件分类
  9. 词向量与垃圾邮件识别
  10. 联想拯救者Y7000P2020 RTX2060显卡 AX201网卡 安装Ubuntu16.04采坑记录