Python 完成作业:骰子概率

Python 完成作业:骰子概率,python,variable-assignment,Python,Variable Assignment,我正在做课堂作业。我重新编辑了我的帖子,以显示我想要的结果。到目前为止,我还停留在频率部分。我希望达到这些结果: 谢谢大家! 随机输入 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.ran

我正在做课堂作业。我重新编辑了我的帖子,以显示我想要的结果。到目前为止,我还停留在频率部分。我希望达到这些结果:

谢谢大家!

随机输入

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()

t是int,因此t[0]没有有效的含义

对。看看你的日常生活:

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

您生成给定数量的卷,并在结果中保留最后一卷。然后忽略这一个值并返回最初分配给局部变量throwDice的0,顺便说一句,该变量会局部禁用函数定义。然后将0返回给调用程序

不能接受整数的第一个和第二个元素


你是如何在不知道你的函数功能不正常的情况下积累这么多代码的?继续之前,请尝试测试小黑人。事实上,试着测试一下:几分钟时间,用适当的打印语句就能指出问题所在。查看此可爱的博客以获取帮助。

如果您要发布错误消息,请同时发布程序的预期行为。当然,我们可以帮助您删除错误-但我们无法帮助您修复代码。不知道你的代码应该做什么。现在,我们只能猜测你想用频率[t[0]+t[1]]做什么。我已经重新编辑了我的帖子。这些结果属于问题的主体,而不是堆栈溢出外的链接。当你得到一个解决方案时,请记住投票选出有用的东西,并接受你最喜欢的答案,即使你必须自己写,所以堆栈溢出可以正确地存档这个问题。我修复了它,现在它会产生结果。我已经用期望的结果更新了帖子。谢谢你的帮助!
   t = throwDice()
   frequency[t[0]+t[1]] += 1;