Python 为什么总数不到1000?
当我运行下面的程序时,总数不是1000。我不知道怎么了 在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)存储在变量中,然后对其进行测试 顺便说一句,有更好的方法可以做到这一点,例如,一个等效的,但
- 180换1
- 136分2秒
- 121分3秒
- 97分4秒
- 72对5
- 6人60人
您在所有
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范围(n)内i的代码>和: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: