python while循环点系统 - 运行缓慢

时间:2013-12-11 00:57:53

标签: python loops while-loop

我必须模拟一个积分游戏,第一个达到11分并以2分获胜的人赢得游戏

我使用了一个函数来决定谁赢得一个点

def simulatePoint(winProbabilityA, winProbabilityB):
    rNumber = random.random()
    if rNumber - winProbabilityA <= 0:
            # A wins the game
            return 0
    elif rNumber - winProbabilityA > 0:
            # B wins the game
            return 1

另一个模拟游戏

def simulateGame (playerA_winProb, playerB_winProb):
    gameWon = False
    pointsA = 0
    pointsB = 0

    while gameWon == False:
            # Simulate point
            point = simulatePoint(playerA_winProb, playerB_winProb)
            if point == 0:
                    pointsA += 1
            elif point == 1:
                    pointsB += 1

            # Checks for points to be equal to 11
            if (pointsA == 11) and (pointsA - pointsB >= 2):
                    # A wins the game
                    gameWon = True
                    return 0
            elif (pointsB == 11) and (pointsB - pointsA >= 2):
                    # B wins the game
                    gameWon = True
                    return 1

这是我认为我出错的地方,我认为while循环导致代码运行缓慢

非常接受任何帮助

2 个答案:

答案 0 :(得分:3)

在他们赢得超过11场比赛之后,如果差异大于或等于2,该怎么办?所以,逻辑应该是这样的

if (pointsA >= 11) and (pointsA - pointsB >= 2):
...
elif (pointsB >= 11) and (pointsB - pointsA >= 2):
...

答案 1 :(得分:1)

我认为您的代码无限运行。

考虑:pointsApointsB分别到达1010。现在,无论哪个玩家获得下一个点,都不会达到任何终止条件,因为pointsApointsB都不会11同时增加2。这会产生无限循环。

您可能想要检查pointsA >= 11pointsB >= 11而不是A == 11B == 11

看起来他们有点打败了我 - 他得到了我的投票。