Я пытаюсь смоделировать 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)
start - stop
= 6 вариантов отstart
доstop - 1
. - person   schedule 15.03.2011random.randint(1, 6)
может быть более понятным. - person nmichaels   schedule 15.03.2011