我想在下面的函数上重复1000次,看看你在这个游戏中是赢了还是亏了钱。在
这个游戏是这样设计的,你扔一对骰子,然后拿回钱或是零花钱。假设我们从5个硬币开始。在
掷一个12得到1.5硬币。在
投掷一枚11金币。在
投掷10得到0.5硬币。在
抛出一个9、8或7不会产生任何结果。在
投掷一个6,5,4,3,2或1会从您的硬币数量中扣除0.5硬币。在
到目前为止,我的实现是这样的:def luckCalc():
amount = 5
# if 12 then 1/36 chance
if random.randrange(1,7) == 6 and random.randrange(1,7) == 6:
amount = amount + 1.5
# if 11 then 2/36 chance
elif (random.randrange(1,7) == 5 and random.randrange(1,7) == 6) or (random.randrange(1,7) == 6 and random.randrange(1,7) == 5):
amount = amount + 1
# if 10 then 3/36 chance
elif (random.randrange(1,7) == 5 and random.randrange(1,7) == 5) or (random.randrange(1,7) == 4 and random.randrange(1,7) == 6) or (random.randrange(1,7) == 6 and random.randrange(1,7) == 4):
amount = amount + 0.5
# if 9,8,7
# 4/36 + 5/36 + 6/36 chance
# 1+6, 2+5, 3+4, 4+3, 5+2, 6+1 chance
# 2+6, 3+5, 4+4, 5+3, 6+2 chance
# 3+6, 4+5, 5+4, 6+3 chance
# then no change in amount
# if 6,5,4,3,2,1
# chances...
# then amount -0.5
return amount
# Iterate over the dice throwing simulator and calculate total
total = 0.0
for a in range(1000):
total = total + luckCalc()
print (total)
在函数的末尾我停止了编码,因为我意识到必须有一个更优雅的解决方案来实现这一点。有什么有趣的建议,我一直听说的蒙特卡洛是什么?在