【问题标题】:Completing an assignment: Dice Probability [closed]完成任务:骰子概率[关闭]
【发布时间】:2017-11-01 21:37:28
【问题描述】:

我正在做一项课堂作业。我重新编辑了我的帖子以显示我想要的结果。到目前为止,我被困在频率部分。我想达到这些结果: Results

谢谢!

随机导入

num = int(input("How many times would you like to roll the dice? "))
sides = int(input("How many sides does the dice have? "))

def throwDice(num=1, sides=6):
    return [random.randint(1,sides) for i in range(num)]


#-- main ----------------------------------------------------------------------   

numberOfTrials = int(input('How many trials? Enter:'))



# perform simulation, record and print frequencies
frequency= 13*[0]  # same as [0,0,0,0,0,0,0,0,0,0,0,0,0]

for i in range(numberOfTrials):
   t = throwDice()
   frequency[t[0]+t[0]] += 1;

# end for
print()
print("Frequencies:")
print(frequency)


# calculate relative frequencies, probabilities and errors
relativeFrequency = [0, 0]
probability = [0,0]
error = [0,0]
for i in range(2, len(frequency)):
   relativeFrequency.append(frequency[i]/numberOfTrials)
   probability.append(min(i-1,13-i)/36)
   error.append(abs(probability[i]-relativeFrequency[i]))
# end for


#print(relativeFrequency)
#print(probability)
#print(error)
print()


# print results
f1 = "{0:<10}{1:<22}{2:<22}{3:<22}"
f2 = 71*"-"
f3 = "{0:>3}       {1:<22.15f}{2:<22.15f}{3:<.15f}"
print(f1.format("Sum","Relative Frequency","Probability","Error"))
print(f2)
for i in range(2, len(frequency)):
   print(f3.format(i, relativeFrequency[i], probability[i], error[i]))
#end for
print()

【问题讨论】:

  • 如果您要发布错误消息,请同时发布程序的预期行为。当然,我们可以帮助您消除错误 - 但我们无法帮助您修复代码。不是不知道你的代码应该做什么。目前,我们只能猜测你想用 frequency[t[0]+t[1]] 做什么。
  • 我重新编辑了我的帖子。
  • 这些结果属于问题正文,而不是 Stack Overflow 外部的链接。
  • 当你得到解决方案时,请记得给有用的东西投票并接受你最喜欢的答案(即使你必须自己写),这样 Stack Overflow 才能正确存档问题。跨度>

标签: python variable-assignment


【解决方案1】:

t 是一个 int,所以 t[0] 没有有效意义。

【讨论】:

    【解决方案2】:

    没错。看看你的日常:

    def throwDice(rolls=1, dice_sides=6):
        results = 0
        throwDice = 0
        for i in range(0, rolls):
                results = random.randint(1, dice_sides)
        return throwDice
    

    ...

       t = throwDice()
       frequency[t[0]+t[1]] += 1;
    

    您制作了给定数量的卷,将最后一个保留在 results 中。然后您忽略该值并返回您最初分配给局部变量throwDice 的0(顺便说一句,它会在本地禁用您的函数定义)。然后将 0 返回给调用程序。

    你不能取整数的第一个和第二个元素。

    您是如何在不知道您的功能功能失调的情况下积累这么多代码的?在继续之前尝试测试小黑人。事实上,试着测试一下:几分钟的打印语句就可以指出问题所在。请参阅这个可爱的 debug 博客寻求帮助。

    【讨论】:

    • 我当时修好了,现在它产生了结果。我已经用期望的结果更新了帖子。感谢您的所有帮助!
    猜你喜欢
    • 2013-07-18
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 2013-06-12
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多