我正在尝试模拟 n 次掷骰子游戏。代码对我来说似乎很有意义,但我从来没有得到正确的结果。例如,如果我输入 n = 5,即五人制比赛,则输赢总和大于 5。
这是它应该如何工作的:如果初始掷骰是 2、3 或 12,则玩家输了。如果掷出的点数是 7 或 11,则玩家获胜。任何其他初始滚动都会导致玩家再次滚动。他一直滚动,直到他掷出 7 或初始掷出的值。如果他在掷出 7 之前重新掷出初始值,则获胜。先掷出 7 是一种损失。
from random import randrange
def roll():
dice = randrange(1,7) + randrange (1,7)
return dice
def sim_games(n):
wins = losses = 0
for i in range(n):
if game():
wins = wins + 1
if not game():
losses = losses + 1
return wins, losses
#simulate one game
def game():
dice = roll()
if dice == 2 or dice == 3 or dice == 12:
return False
elif dice == 7 or dice == 11:
return True
else:
dice1 = roll()
while dice1 != 7 or dice1 != dice:
if dice1 == 7:
return False
elif dice1 == dice:
return True
else:
dice1 = roll()
def main():
n = eval(input("How many games of craps would you like to play? "))
w, l = sim_games(n)
print("wins:", w,"losses:", l)