我想通过以下函数进行1000次交互,以确定您是否在此游戏中获胜或放弃了金钱。概率骰子Python中的两个骰子游戏
游戏的设计是这样的,你扔一对骰子,并拿回钱或宽松的钱。假设我们从5个硬币开始。
投掷收益率1.5硬币。
投掷收益率硬币。
投掷收益率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)
我停止对函数结束编码,因为我认识到,必须对如何实现这一目标更优雅的解决方案。任何有趣的建议,我听说过的蒙特卡罗是什么?
您当前的常规“重新卷”的骰子每个'if'声明。以'roll = random.randrange(1,7)+ random.rangerange(1,7)'开始,然后对其进行测试。您每次通过luckCalc重设金额,而不是跟踪外部总额。另外,11做什么? – jonrsharpe
干得好,你敏锐的眼睛发现了一个逻辑漏洞。 - 我添加了11. – nottinhill