Python 为什么总数不到1000?

Python 为什么总数不到1000?,python,random,simulation,Python,Random,Simulation,当我运行下面的程序时,总数不是1000。我不知道怎么了 在1000次掷骰子中,有: 180换1 136分2秒 121分3秒 97分4秒 72对5 6人60人 总共有666卷骰子 我想具体点,如果有什么我不清楚的,请告诉我。谢谢大家:) 您在所有if/elif测试中调用randrange(6),因此值不同(它是随机的),您可能会从toss函数返回None(并且您缺少一些计数) 将randrange(6)存储在变量中,然后对其进行测试 顺便说一句,有更好的方法可以做到这一点,例如,一个等效的,但

当我运行下面的程序时,总数不是1000。我不知道怎么了

在1000次掷骰子中,有:

  • 180换1
  • 136分2秒
  • 121分3秒
  • 97分4秒
  • 72对5
  • 6人60人
总共有666卷骰子

我想具体点,如果有什么我不清楚的,请告诉我。谢谢大家:)


您在所有
if/elif
测试中调用
randrange(6)
,因此值不同(它是随机的),您可能会从
toss
函数返回
None
(并且您缺少一些计数)

randrange(6)
存储在变量中,然后对其进行测试

顺便说一句,有更好的方法可以做到这一点,例如,一个等效的,但有效的:

def toss():
    return str(randrange(6)+1)
但是使用
collections.Counter
和生成器可以更快地随机生成1000个从1到6的值:

import collections
import random
c = collections.Counter(random.randint(1,6) for _ in range(1000))
print(c)
print(sum(c.values()))
我得到这两条输出线(首先是计算卷数和总卷数的dict):


现在我有了1000个值:)

,因为它在任何情况下都会再次调用该函数

if randrange(6) == 0:

如果它不是0,那么它将转到第二个if,其中将使用新值再次调用randrange(6)。

尝试将其更改为
def toss():return randrange(6)+1
:i=toss();count[i]=count.get(i,0)+1只是为了让我的眼睛受伤,Lesso是一个糟糕的调试器。你试过什么?
Counter({3: 199, 2: 172, 1: 160, 5: 160, 4: 158, 6: 151})
1000
if randrange(6) == 0: