python 入门学习 模拟投掷骰子

发布时间:2025-02-04 06:40

《大富翁》通过掷骰子决定行动,模拟投资经营体验。 #生活乐趣# #游戏乐趣# #桌面游戏#

本节视频学习使用 python语言实现模拟投掷骰子。

本章节涉及到的知识点有:

1. 通过python模拟随机事件,或生成随机数

    random 模块 函数含义random()生成一个[0,1.0] 之间的随机浮点数uiform(a,b)生成一个a 到 b 之间的随机浮点数randint(a,b)生成一个 a 到 b 之间的随机整数choice(<list>)从列表中随机返回一个元素shuffle(<list>)将列表中元素随机打乱sample(<list>,k)从指定的列表中随机获取K个元素

 更多 random 模块的使用方法见 https://docs.python.org/3/library/random.html

遍历列表时如何同时获取每个元素的索引号 及其元素值enumerate()  函数

2.zip()函数

 3.python 数据可视化

https://matplotlib.org/gallery.html

如果标题显示中文有问题添加 如下两行代码即可解决

# 解决中文显示问题

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

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

matplotlib 模块 

 

4.python 简单的数据分析 

matplotlib 直方图

5.使用科学计算库NumPy 简化程序

更详细的教程见   https://www.sohu.com/a/202682457_718302

lesson1 

模拟掷骰子一个骰子

练习实践代码源码与输出结果

"""

作者:

版本:v1.0

日期:20190730

功能:模拟投掷骰子

"""

import random

def roll_dict():

roll = random.randint(1,7)

return roll

def main():

totle_times = 1000

result_list = [0] * 6

for i in range(totle_times):

roll = roll_dict()

for j in range(1,7):

if roll == j :

result_list[j-1] += 1

print(result_list)

for i, result in enumerate(result_list):

print('点数:{} ,次数{} 频率 {}'.format(i+1, result, result / totle_times))

print('end')

if __name__ == '__main__':

main()

lesson2

模拟投掷两个骰子

练习实践代码源码与输出结果

"""

作者:

版本:v2.0

日期:20190730

功能:模拟投掷骰子

模拟投掷两个骰子

"""

import random

def roll_dice():

roll = random.randint(1, 7)

return roll

def main():

totle_times = 1000

result_list = [0]* 12

roll_list = list(range(2,13))

roll_dict = dict(zip(roll_list,result_list))

for i in range(totle_times):

roll1 = roll_dice()

roll2 = roll_dice()

for j in range(2, 13):

if (roll1+ roll2) == j:

roll_dict[j ] += 1

print(result_list)

for i, result in roll_dict.items() :

print('点数:{} ,次数{} 频率 {}'.format(i , result, result / totle_times))

print('end')

if __name__ == '__main__':

main()

lesson3

需要安装库:命令如下:        pip3 install matplotlib 

如下图所示是安装成功后的提示界面

练习实践代码源码与输出结果

"""

作者:

版本:v3.0

日期:20190730

功能:模拟投掷骰子

模拟投掷两个骰子,可视化

"""

import random

import matplotlib.pyplot as plt

def roll_dice():

roll = random.randint(1, 7)

return roll

def main():

totle_times = 100

result_list = [0]* 12

roll_list = list(range(2,13))

roll_dict = dict(zip(roll_list,result_list))

roll1_list = []

roll2_list = []

for i in range(totle_times):

roll1 = roll_dice()

roll2 = roll_dice()

roll1_list.append(roll1)

roll2_list.append(roll2)

for j in range(2, 13):

if (roll1+ roll2) == j:

roll_dict[j ] += 1

print(result_list)

for i, result in roll_dict.items() :

print('点数:{} ,次数{} 频率 {}'.format(i , result, result / totle_times))

x = range (1, totle_times + 1 )

plt.scatter(x, roll1_list, c= 'red', alpha = 0.5)

plt.scatter(x, roll2_list, c= 'green', alpha = 0.5)

plt.show()

print('end')

if __name__ == '__main__':

main()

lesson4 

可视化投掷两个骰子的结果

练习实践代码源码与输出结果

"""

作者:

版本:v3.0

日期:20190730

功能:模拟投掷骰子

模拟投掷两个骰子,可视化使用直方图显示

"""

import random

import matplotlib.pyplot as plt

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

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

def roll_dice():

roll = random.randint(1, 6)

return roll

def main():

totle_times = 1000

roll_list = []

for i in range(totle_times):

roll1 = roll_dice()

roll2 = roll_dice()

roll_list.append(roll1 + roll2)

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

plt.title('骰子点数统计')

plt.xlabel('点数')

plt.ylabel('频率')

plt.show()

print('end')

if __name__ == '__main__':

main()

lesson5

练习实践代码源码与输出结果

"""

作者:

功能:

版本:1.0

2.0新增功能:模拟投掷两个骰子

3.0新增功能:可视化投掷两个骰子的结果

4.0新增功能:直方图可视化结果

5.0新增功能:科学计算

日期:20190806

"""

import matplotlib.pyplot as plt

import numpy as np

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

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

def main() :

print('main')

total_times = 1000

roll1_arr = np.random.randint(1,7,total_times)

roll2_arr = np.random.randint(1,7,total_times)

result_arr = roll1_arr + roll2_arr

hist, bins = np.histogram(result_arr, bins= range(2,13))

print(hist)

print(bins)

plt.hist(result_arr, bins=range(2, 13), density=1, edgecolor='black', linewidth=1, rwidth=0.8)

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.title('骰子点数统计')

plt.xlabel('点数')

plt.ylabel('频率')

plt.show()

if __name__ == '__main__':

main()

网址:python 入门学习 模拟投掷骰子 https://www.yuejiaxmz.com/news/view/754497

相关内容

将3颗骰子各掷一次,设事件A=“三个点数都不相同”.B='至少出? 爱问知识人
Python基础学习攻略:从入门到进阶的完整路径
Python深度学习实践:深度学习在虚拟助理中的应用
Python模拟简易版淘宝客服机器人的示例代码
揭秘Python虚拟助手:与未来的对话
数学建模入门
【Python学习】趣味工具
《生活不是掷骰子:理性决策的贝叶斯思维》刘雪峰【文字版
亲子游戏有哪些推荐2023 热门的亲子游戏下载大全
如何利用Python构建智能虚拟助手

随便看看