私はクラップスのnゲームをシミュレートしようとしています。コードは私には理にかなっているようですが、正しい結果が得られません。たとえば、n = 5、つまり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)