【发布时间】:2016-02-07 00:16:20
【问题描述】:
我在 Python 中使用随机来模拟掷骰子游戏。然后我模拟游戏 n 次,以查看玩家击败庄家的频率。我有一个带有种子的测试文件来检查我的代码,但我的数字只是略有偏差。我认为错误出在结构上,但似乎无法弄清楚到底是什么。
掷骰子
def quietRoll():
return random.randrange(1,7) + random.randrange(1,7)
掷骰子模拟
def quietCraps():
#first roll
firstRoll = quietRoll()
if firstRoll in (7,11):
return 1
elif firstRoll in (2,3,12):
return 0
#every other roll
newDice = quietRoll()
while newDice not in (7, firstRoll):
newDice = quietRoll()
if newDice == firstRoll:
return 1
if newDice == 7:
return 0
掷骰子 n 次
def testCraps(n):
count = 0
playerWin = 0
while count <= n:
if quietCraps() == 1:
playerWin += 1
count += 1
else:
count += 1
return playerWin/n
预期输出
Failed example:
random.seed(5)
testCraps(1000)
Expected:
0.497
Got:
0.414
【问题讨论】:
-
你的问题是……什么?
-
@DavidSchwartz 是什么导致预期输出与实际不同?
-
您是如何得出预期输出的?
-
@DeliriousMistakes 在测试文件中提供给我
-
玩家在掷骰子中获胜的概率比 0.497 更接近 0.493。
标签: python python-3.x random while-loop