Skip to content

Calculating Odds for Third Player’s Tennis Win

Three equally skilled tennis players play in a tournament.

After each round, the winner plays against the third player.

The first to reach two consecutive wins becomes the champion.

If A and B play the first game, what is the probability that C is the tennis tournament winner?

Introduction:

Let’s look at a couple of examples of matches and their outcomes:

  • if A wins his first match and defeats C after that, he becomes the winner. If we look at A and B, their path in the tournament is symmetrical, given that they are equally strong. Then the probability that A wins is equal to that of B winning.
  • a positive case for C would be one in which, regardless of who wins the first match, he wins the next two ones, defeating both B and A and winning the tournament. If we consider C’s chances, we know the first game he plays will be against a player that already has a win under his belt. He is competing at a disadvantage, so his chances are less than those of A and B.

Solution:

Let P be the probability that C wins the tournament. We can assume without loss of generality that A wins the first game.

Let’s look at potential paths starting from the point where C starts playing.

With a probability of \dfrac{1}{2}, A wins, thus winning the entire tournament. On this branch, C’s chances are 0.

With a probability of \dfrac{1}{2}, C wins. From this point, he can win the next game, and thus the tournament.

Or he can lose the next one.

Then, either B wins the next game and the tournament or loses to A, and the tournament returns to the state it was in when C started playing.

So, from this point on, C’s win probability is again P.

We can write an equation for P now, getting that \dfrac{2}{7}. As expected, this is less than \dfrac{1}{3}, meaning that C is indeed disadvantaged.

This question can become more challenging by changing some of the parameters. One way to do this is by making the players not equal in skill, thus changing the probabilities with which each game outcome occurs. Another one is by changing the number of consecutive games required to win the tournament.

Let’s take a look at what happens if we require three consecutive wins to win the tournament. With the same assumption about the first game as before, consider the possible outcomes.

A wins the game against C, and then the next one, and he becomes the winner. Or he loses the second game to B, and then B, having won one game plays against C.

This is the same situation as the one we started from. If C wins his first game against A but loses to B, we arrive at an alternative scenario, in which C’s winning probability is denoted by Q. This scenario can be characterized by a match between A and B, in which one of them has a win from before.

Conversely, if C wins the first two games, and then the third, he becomes the winner with probability one. If he loses the third match, we are again at the alternative scenario. Following the probability tree, we obtain an equation between P and Q.

Now we can develop the tree starting from the alternate scenario. Following a similar logic to before, we can again get another equation between P and Q. Putting the two together, we get that P equals \dfrac{8}{27}.

Simulation:

We first import two python libraries:

random – Will be used for selecting the winner

numpy – Will only be used out of convenience, for setting nan values.

Implementation logic: the implementation is very straightforward, we define our players, use a counter for consecutive wins and keep playing until someone reaches the required number of games. The resulting code can be seen below:

def sim_tournament(required_games=2):
    players = set(['A','B','C'])
    bench = set('C')
    
    prev_winner = np.nan
    count_wins = 1
    
    while count_wins < required_games:
        match_players = players - bench
        match_winner = random.choice(list(match_players))
        bench = match_players - set(match_winner)

        if match_winner == prev_winner:
            count_wins += 1
        else:
            count_wins = 1
        
        prev_winner = match_winner
    
    return match_winner
 

Video Solution

Feel free to share your thoughts and ideas in the Latex-enabled comment section below!

Leave a Reply

Your email address will not be published. Required fields are marked *