lec08-模拟掷骰子
一、v3.0新增功能:可视化投掷两个骰子结果(matplotlib)
"""
版本:3.0
v1.0功能:模拟掷骰子
v2.0新增功能:模拟投掷两个骰子(zip()函数)
v3.0新增功能:可视化投掷两个骰子结果(matplotlib)
"""
import random
import matplotlib
import matplotlib.pyplot as plt
def roll_dice():
# 模拟骰子投掷结果
roll = random.randint(1, 6)
return roll
def main():
# 总投掷次数
total_times = 100
# 初始化列表[0,0,0,0,0,0]
result_list = [0]*11
# 初始化点数列表
roll_list = list(range(2, 13))
# zip()将对应列表打包成元组,为了可修改转换成字典
roll_dict = dict(zip(roll_list, result_list))
# 记录骰子的结果
roll1_list = []
roll2_list = []
for i in range(total_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)
# (v2.0)使用enumerate 遍历列表,获取索引与值
# for i, result in enumerate(result_list):
# 使用.items()遍历字典
for i, result in roll_dict.items():
print('点数{}投掷:{}次,频率:{}'.format(i, result, result/total_times))
# 数据可视化
x = range(1, total_times + 1)
# 设置c颜色,alpha透明度
plt.scatter(x, roll1_list, c='red', alpha=0.5)
plt.scatter(x, roll2_list, c='green', alpha=0.5)
plt.show()
if __name__ == '__main__':
main()