要求
知识点提示:
random模块和enumerate()函数的使用
任务要求:
1、知识点提示:random模块和enumerate()函数的使用
2、任务要求:
(1)模拟抛掷1个骰子,并显示各点数出现的次数及频率,如下图示例
python实现掷骰子并数据可视化
(2)模拟抛掷2个骰子,并显示各点数出现的次数及频率,如下图示例
python实现掷骰子并数据可视化
3.基于题目二结果数据可视化

python实现掷骰子并数据可视化第一题:
1.分析:
random模块,是python标准模块(用于生成随机数)。
1.1 安装random模块,在管理员命令窗口输入下面的代码。

pip install random

1.2 导入random模块

import random

使用randint函数获取一个1到6的随机数,randint函数用于生成一个0~10的随机数(包括0和1)。

random.randint(1,6)

1.3 enumerate()函数,用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

for i,j in enumerate(list):

2.实现

import random
def A():
    '''建立函数,模拟掷骰子
    使用my_num记录点数,并返回'''
    my_num = random.randint(1,6)
    return my_num


def main():
    #初始化函数,定义列表,并初始化。
    my_list = [0] * 6
   for i in range(1,10001):#掷骰子次数
        my = A()
        for j in range(1,7):
            if my == j:
                my_list[j-1] += 1#骰子次数累加
    for x,num in enumerate(my_list):#遍历列表索引值及个点数出现的次数
        print('点数%s的次数:%d,频率:%.4f' % (x + 1, num, num / 10000))

#执行main()函数下的代码
if __name__ == "__main__":
    main()

3.运行结果:
python实现掷骰子并数据可视化第二题:

  1. 分析:
    模拟掷两个骰子,那么它们的点数和为(2,12)。定义两个列表,valuex_list和key_list,并转成字典型,
    myDict = dict(zip(valuex_list,key_list)),key_list用于存放点数,valuex_list用于存放出现次数。dict.items()用于遍历字典键和值。
    2.实现:
import random

def A():
    myNum = random.randint(1,6)
    return myNum

def main():
    oneList = [0] * 11
    towList = list(range(2,13))
    myDict = dict(zip(towList,oneList))#转为字典型
    for i in range(1,10001):
        myNum1 = A()
        myNum2 = A()
        for j in range(2,13):
            if myNum1 + myNum2 == j:
                myDict[j] += 1
    for x,y in myDict.items():
        print('点数{}的次数:{},频率:{}'.format(x, y, y / 10000))

if __name__ == '__main__':
    main()

3.结果:
python实现掷骰子并数据可视化第三题:
1.分析:
1.1导入random模块,用于生成随机数。
1.2导入matplotlib库(是python的2D绘图库),安装matplotlib同安装random模块一样。
1.3导入numpy库,NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
2.实现:

import random
import matplotlib.pyplot as plt
import numpy

#显示中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False # 步骤二(解决坐标轴负数的负号显示问题)

def A():
    A0 = random.randint(1,6)
    return A0


def main():
    B = []

    times = 10000
    for i in range(1,times+1):
        A1 = A()
        A2 = A()
        B.append(A1+A2)
    plt.hist(B, range(2, 14), normed=1, linewidth=1, rwidth=0.8)
    plt.title('骰子点数统计')
    x = ['2点', '3点', '4点', '5点', '6点', '7点',
                   '8点', '9点', '10点', '11点', '12点']
    # x轴刻度替换
    plt.xticks(numpy.arange(2, 13) + 0.5, x)
    # 标题
    # x轴标题
    plt.xlabel('点数')
    # y轴标题
    plt.ylabel('频率')
    plt.show()




if __name__ == '__main__':
    main()


3.结果:
python实现掷骰子并数据可视化我系菜鸟一枚,代码不优雅,结构不清晰,请多多指教/抱拳

相关文章: