m0_66638719 2023-08-08 09:21 采纳率: 50%
浏览 5
已结题

使用python模拟掷骰子一直不行,实在找不到问题

刚学python,感觉写得没问题,一直不成功
y轴刻度对不上,数据也对不上

from random import randint
from plotly.graph_objs import Bar,Layout
from plotly import offline


class Die:
    '''创建一个骰子的类'''

    def __init__(self,sides=6):
        '''初始设置,默认骰子为6面'''
        self.sides = sides
        self.results = []
        self.frequencies = []


    def roll(self,num=1):
        '''掷骰子,默认一次'''
        self.num = num
        for i in range(0,num):
            self.results.append(randint(1,self.sides))


    def analyse_frequency(self):
        '''分析每个点数的频率'''
        for value in range(1,self.sides+1):
            frequency = self.results.count(value)
            self.frequencies.append(frequency)


    def ans_visable(self):
        '''数据可视化'''
        x_values = list(range(1,self.sides+1))
        #Bar不能直接接受range的结果,需使用list()
        data = [Bar(x=x_values,y=self.frequencies)]
        #配置图表
        x_axis_config = {'title' : '结果'}
        y_axis_config = {'title' : '结果的频率'}
        #反回指定图表和配置的对象
        my_layout = Layout(title=f'掷骰子{self.num}结果',xaxis=x_axis_config,yaxis=y_axis_config)
        #离线作图
        offline.plot({'data':data,'layout':my_layout} ,filename='d6.html')


if __name__ == '__main__':

    die_1 = Die()
    die_2 = Die()
    die_1.roll(1000)
    die_2.roll(1000)
    results = []
    frequencies = []

    #计算结果
    for num in range(0,1000):
        result = die_1.results[num] + die_2.results[num]
        results.append(result)

    #  统计结果
    for value in range(2,die_1.sides+die_2.sides+1):
        frequency = results.count(value)
        frequencies.append(frequency)


    #可视化
    x_values = list(range(2,die_1.sides+die_2.sides+1))
    data = [Bar(x=x_values,y=frequencies)]
    #配置图表
    x_axis_config = {'title' : '结果'}
    y_axis_config = {'title' : '结果的频率'}
    #反回指定图表和配置的对象
    my_layout = Layout(title='掷骰子的结果',xaxis=x_axis_config,yaxis=y_axis_config)
    #离线作图
    offline.plot({'data':data,'layout':my_layout} ,filename='ans.html')

img

求解答

  • 写回答

2条回答 默认 最新

  • 浪客 2023-08-08 09:36
    关注

    你输出一下results和frequencies ,结果没问题。
    伪随机数有一定的规律的,并不是真随机。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月16日
  • 已采纳回答 8月8日
  • 修改了问题 8月8日
  • 创建了问题 8月8日

悬赏问题

  • ¥60 二次元手游日常任务自动化代肝(相关搜索:自动化)
  • ¥15 mysql将查询的结果作为动态列名怎么实现
  • ¥50 python自动地图截图脚本
  • ¥15 悬赏一本书(内含Matlab代码)的书名、作者
  • ¥20 瑞萨RA4M1芯片刷写为arduino r4 minima
  • ¥15 fastreport怎么判断当前页数
  • ¥15 Kylin-Desktop-V10-GFB-Release-JICAI_02- 2207-Build14-ARM64.iso有没有这个版本的系统啊
  • ¥15 能不能通过蓝牙将传感器数据传送到手机上
  • ¥20 100元python和数据科学实验项目
  • ¥15 根据时间在调用出列表