【发布时间】:2020-03-02 05:07:33
【问题描述】:
我为标题问题起草了以下代码,但返回结果始终为 0。谁能帮我弄清楚这里有什么问题?
非常感谢!
import random
dice_sides = 6
frequency_list = []
def roll_dice(times):
results = []
for roll_num in range(times):
result = random.randint(1,dice_sides)
results.append(result)
for i in range(dice_sides):
if results.count(i) != 2:
frequency = 0
break
else:
frequency = 1
return frequency
def occurrence(N,times):
for j in range(N):
frequency_list.append(roll_dice(times))
prob = frequency_list.count(1)
return prob
print(occurrence(10000,12))
【问题讨论】:
-
尝试使用例如调试大量的打印函数来遵循程序的逻辑流程。
-
results.count(i)返回滚动列表中i的出现次数。在 10,000 次滚动中,其中一方仅出现 2 次的可能性很小,但极不可能。因此,results.count(i)在第一个i中很可能不是 2,而您在那一刻停止。这需要重新考虑您的算法。
标签: python-3.x probability dice