模拟掷骰子实际是抽取(1~6之间的)随机数问题,涉及random模块,后面版本的数据可视化主要应用matplotlib.pyplot模块。

1.0:模拟一个骰子的结果。首先定义roll_dice()函数,从1~6之间随机抽取一个整数作为掷骰子的结果。在主函数中定义一个长度为6的列表(初始值为0),记录每个点出现的次数。每次掷完骰子都进行判断,掷出的点数在对应的列表位置上的元素加1。enumerate()函数将列表索引与对应的元素一一对应起来。

"""

模拟掷骰子

1.0:输出结果为掷骰子的频数与频率

"""

import random

def roll_dice():

"""

模拟掷骰子

:return: 返回一个1-6之间的随机数

"""

roll = random.randint(1,6)

return roll

def main():

Times = 10000

result_list = [0] * 6

for i in range(Times):

roll = roll_dice()

for j in range(1,7):

if roll == j:

result_list[j-1] += 1

for k,result in enumerate(result_list):

print ("掷得数字{},次数为{},频率为{}".format(k+1,result,result/Times))

if __name__=="__main__":

main()

2.0:模拟掷两个骰子的结果。与1.0不同的是,2.0定义两个列表,一个记录点数,一个记录点数出现的次数。zip()函数对两个列表进行组合,以元组的形式输出,dict(zip())函数将两个列表的元素以字典的形式输出。

"""

模拟掷骰子

2.0:模拟掷两个骰子的结果

"""

import random

def roll_dice():

"""

模拟掷骰子

:return: 返回一个1-6之间的随机数

"""

roll = random.randint(1,6)

return roll

def main():

Times = 1000

result_list = [0] * 11

roll_list = list(range(2,13))

roll_dict = dict(zip(roll_list,result_list))

for i in range(Times):

roll1 = roll_dice()

roll2 = roll_dice()

for j in range(2,13):

if roll1 + roll2 == j:

roll_dict[j] += 1

for k,result in roll_dict.items():

print ("掷得数字{},次数为{},频率为{}".format(k,result,result/Times))

if __name__=="__main__":

main()

3.0:将两个骰子的结果用散点图可视化,这里要用到matplotlib.python库。为了便于将两个骰子的结果分别可视化,定义连个列表,分别记录每个骰子的结果。plt.scatter()函数中的参数alpha表示透明度。

"""

模拟掷骰子

3.0:将掷两个骰子的结果可视化

"""

import random

import matplotlib.pyplot as plt

def roll_dice():

"""

模拟掷骰子

:return: 返回一个1-6之间的随机数

"""

roll = random.randint(1,6)

return roll

def main():

Times = 10

result_list = [0] * 11

roll_list = list(range(2,13))

roll_dict = dict(zip(roll_list,result_list))

roll1_result = []

roll2_result = []

for i in range(Times):

roll1 = roll_dice()

roll1_result.append(roll1)

roll2 = roll_dice()

roll2_result.append(roll2)

for j in range(2,13):

if roll1 + roll2 == j:

roll_dict[j] += 1

for k,result in roll_dict.items():

print ("掷得数字{},次数为{},频率为{}".format(k,result,result/Times))

#数据可视化

plt.scatter(range(Times),roll1_result,alpha=0.5,c="red")

plt.scatter(range(Times), roll2_result, alpha=0.5, c="green")

plt.show()

if __name__=="__main__":

main()

4.0:用直方图可视化掷骰子的结果。函数中的参数normed=1可将y轴显示为频率。

"""

模拟掷骰子

4.0:直方图可视化掷骰子结果

"""

import random

import matplotlib.pyplot as plt

plt.rcParams["font.sans-serif"] = ["SimHei"]

plt.rcParams["axes.unicode_minus"] = False

def roll_dice():

"""

模拟掷骰子

:return: 返回一个1-6之间的随机数

"""

roll = random.randint(1,6)

return roll

def main():

Times = 1000

roll_list = []

for i in range(Times):

roll1 = roll_dice()

roll2 = roll_dice()

roll_list.append(roll1+roll2)

plt.hist(roll_list, bins=range(2,14), normed=1,edgecolor="black",linewidth=1)

plt.title ("掷骰子结果")

plt.xlabel("点数")

plt.ylabel("频率")

plt.show()

if __name__=="__main__":

main()

5.0:涉及科学计算numpy库。在numpy中的列表可直接相加。

"""

模拟掷骰子

4.0:科学计算

"""

import numpy as np

import matplotlib.pyplot as plt

plt.rcParams["font.sans-serif"] = ["SimHei"]

plt.rcParams["axes.unicode_minus"] = False

def main():

Times = 1000

roll_list = []

roll1 = np.random.randint(1,7,size=Times)

roll2 = np.random.randint(1,7, size=Times)

roll_list = roll1 + roll2

plt.hist(roll_list, bins=range(2,14), normed=1,edgecolor="black",linewidth=1,rwidth=0.8)

plt.title ("掷骰子结果")

tick_labels = ["2点","3点","4点","5点","6点","7点","8点","9点","10点","11点","12点"]

tick_pos = np.arange(2,13)+0.5

plt.xticks(tick_pos, tick_labels)

plt.xlabel("点数")

plt.ylabel("频率")

plt.show()

if __name__=="__main__":

main()

投掷骰子的python代码_模拟骰子(Python),掷骰子相关推荐

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

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

  2. python 代码_如何让Python代码加速运行?

    Python 是一种脚本语言,相比 C/C++ 这样的编译语言,在效率和性能方面存在一些不足.但是,有很多时候,Python 的效率并没有想象中的那么夸张.本文对一些 Python 代码加速运行的技巧 ...

  3. 有趣的超短python代码_有趣的python精短程序

    python可以简单优美,也很有趣,下面是收集的例子: 1.一句话开始一个http的文件服务器: $ python -m SimpleHTTPServer Serving HTTP on 0.0.0. ...

  4. 简单几段python代码_如何用python跑一段鸿蒙最简单代码?

    首先,鸿蒙并不支持python,HarmonyOS代码开发支持多语言,包括Java.XML(Extensible Markup Language).C/C++ . JS(JavaScript).CSS ...

  5. 货币转换python代码_演示4:python与Tkinter的货币转换,4python,币值,含,tkinter

    1 说明 币值的转换,此处以2020年10月20日的某时刻的币种汇率来演示. 2 知识点 2.1 汇率与币种 由于汇率在币种转换时会由一点误差,所以用两种方向的转换来互相弥补,但是也不能完全保证正确, ...

  6. 一段有趣的python代码_你知道 Python 这五个有趣的彩蛋吗?

    当一门编程语言是开源的时候,往往会有产生一些搞笑和有趣的东西.通常,这意味着社区的贡献者会为该语言添加一些有趣和特别的彩蛋以及隐藏的特性(当然前提是不会增加在生产环境中使用的风险). Python 就 ...

  7. 网页爬虫python代码_《用python写网络爬虫》完整版+源码

    原标题:<用python写网络爬虫>完整版+源码 <用python写网络爬虫>完整版+附书源码 本书讲解了如何使用Python来编写网络爬虫程序,内容包括网络爬虫简介,从页面中 ...

  8. 货币转换程序(双符号)python代码_如何实现python汇率转换代码

    对于刚刚入门python的学习者们,最头疼的莫过于基础的功能实现代码了,很多函数可以实现意义是一样的,今天小编教大家实例--实现python汇率转换代码. Python中的货币转换器 tkinter ...

  9. 打卡签到python代码_如何利用Python实现自动打卡签到

    需求描述 我们需要登录考勤系统(网页端,非手机端)进行签到,如果不想每天都早早起来打卡签到,就可以通过写程序实现这一功能. 业务梳理 通过长时间的早起打卡签到发现规律,我每天只是不停的点击,签到,都是 ...

最新文章

  1. 计算机控制系统康波答案,计算机控制系统(康波)第4章部分参考答案[1]
  2. 一文详解非线性优化算法:保姆级教程-基础理论
  3. Testlink使用介绍
  4. 退出登录后点返回键 是登录状态_看了这50条登录的测试点,你还敢说测试很容易吗...
  5. COSC 1047 – Winter 2019 – Assignment
  6. matlab中上下光标的作用,当鼠标移动到按钮上时改变光标形状
  7. JMETER 第一个实践例子
  8. 力扣每日一刷--- 验证回文字符串II(非严格) 以及取反知识
  9. python写ini文件_Python读写ini文件
  10. 第12章 正则表达式与文件格式化处理
  11. 2节串联锂电池充电管理芯片IC,5V,12V升降压解决方案
  12. 来和大家聊一聊“蓉叶云库”
  13. 电感 电容耦合的判断
  14. java六角括号怎么打_六角括号怎么打出来 六角括号输入方法
  15. 英国智能机器人技术和自主系统研究发展概况
  16. 服务器设置静态IP地址教程,在Ubuntu服务器18.04上设置静态IP地址
  17. 大学计算机基础python第二次作业_python第二次作业
  18. [珍藏]什么是威客,2008最新验证威客网址
  19. BZOJ3926: [Zjoi20150]诸神眷顾的幻想乡
  20. 【期末复习】2021-2022南邮网络管理理论与实践复习题

热门文章

  1. iOS开发常用之博客
  2. 除了谷歌,这些互联网公司的办公室设计也十分酷炫
  3. Cocos2dx开发手机游戏工具集(持续更新)
  4. #586 – 冒泡事件和隧道事件通常是成对出现(Bubbling and Tunneling Events Are Typically Paired)
  5. 解决大篇幅pdf中英文复制时,粘贴到word中自动换行的问题
  6. android双屏不同apk,双屏可折叠 通吃.exe和.apk 微软终于发大招了!
  7. java面试详解-总有你能碰得到的
  8. Java之坦克大战(二)---坦克图形绘制
  9. 1000:有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数:
  10. unity3d学习笔记-动画(1.Unity 中动画的基本原理)