Python 模拟一对骰子的重复掷骰,直到获得100掷骰子为止;然后打印卷数
我试着数一数两个骰子加起来100个骰子需要多少个骰子,r(2-12)并打印出来。这就是我迄今为止所尝试的:Python 模拟一对骰子的重复掷骰,直到获得100掷骰子为止;然后打印卷数,python,while-loop,probability,dice,Python,While Loop,Probability,Dice,我试着数一数两个骰子加起来100个骰子需要多少个骰子,r(2-12)并打印出来。这就是我迄今为止所尝试的: from random import randrange def diceprob(r): count = 0 while count < 100: roll = random.randrange(2, 13) if roll == r: count += 1 print("It took {} rol
from random import randrange
def diceprob(r):
count = 0
while count < 100:
roll = random.randrange(2, 13)
if roll == r:
count += 1
print("It took {} rolls to get 100 rolls of {}".format(count, r))
来自随机导入范围
def diceprob(右):
计数=0
当计数小于100时:
滚动=随机。随机范围(2,13)
如果滚动==r:
计数+=1
打印(“花了{}卷才得到100卷{}”。格式(计数,r))
但当运行时,它总是打印出“用100卷得到100卷5”,5的值根据r的值变化。为什么计数没有正确增加?您计算的是得到
r
的卷数,而不是所有卷数。
还要注意的是,两个六面骰子卷之和的分布并不均匀,因此需要调用random.randrange(1,7)
两次
import random
def diceprob(r):
total_count = 0
count = 0
while count < 100:
roll = random.randrange(1, 7) + random.randrange(1, 7)
total_count += 1
if roll == r:
count += 1
print("It took {} rolls to get 100 rolls of {}".format(total_count, r))
将其与图进行比较,您需要两个变量,一个用于总转鼓,另一个用于等于
r
的转鼓。您只需计算等于r
的卷数,然后打印即可
def diceprob(r):
total = 0
count = 0
while count < 100:
roll = random.randrange(2, 13)
total++
if roll == r:
count++
print("It took {} rolls to get {} rolls of {}".format(total, count, r))
def diceprob(r):
总数=0
计数=0
当计数小于100时:
滚动=随机。随机范围(2,13)
总数++
如果滚动==r:
计数++
打印(“需要{}个卷才能得到{}个卷的{}”。格式(总计、计数、r))
还有一个单独的问题是,您滚动的是一个11面骰子(数字从2到12),而不是两个6面骰子。两个骰子滚动的总和不是由
random.randrange(2,13)
正确表示的。这样一卷中的金额分配不均匀。例如,有一个组合创造了一个2和6的总和为7。看看两个骰子总和的概率分布,如果我做randrange(2,13),会有任何错误或计算失误吗?@Frank yesrandrange(2,13)
有,但两个骰子的总和有另一个分布。看见
def diceprob(r):
total = 0
count = 0
while count < 100:
roll = random.randrange(2, 13)
total++
if roll == r:
count++
print("It took {} rolls to get {} rolls of {}".format(total, count, r))