This problem is from the book of M.G.Bulmer "Principles of Statistics"
Problem 2.6, page 28.
Five players enter a competition in which each plays a game against each of the others.
The two players in each game have an equal chance of winning it;
a game must end in a win for one of the players who then scores a point.
The competition is won by the player or players scoring most points.
What is the probability that a particular player will
(a) win the competition outright;
(b) share in winning with other players?
I could not solve this by paper and pencil so I wrote a Python program which solves it.
Here's the program.
import pprint
def main():
mapping = {}
mp = {}
# There are 10 games in total.
# So there are 2^10 = 1024 possible outcomes
# from the competition as a whole.
k = 0
for i in range(5):
for j in range(5):
if (i<j):
mapping[k] = (i,j)
k = k+1
# print(mapping)
for num in range(1024):
lst = []
deg = 1
for q in range(10):
lst.append(1 if (num & deg) else 0)
deg = deg << 1
mp[num] = lst
pprint.pp(mp)
player_0_wins = 0
player_0_wins_outright = 0
for competition in mp:
print()
print()
print()
points = {}
n = 0
for game in mp[competition]:
(p,q) = mapping[n]
if not p in points:
points[p] = 0
if not q in points:
points[q] = 0
points[p] = points[p] + game
points[q] = points[q] + (1-game)
print("Player", p, ":", "Player", q, " = ", game, " : ", 1-game)
n = n+1
print("points = ", points)
# Here we suppose that:
c1 = 1 # player 0 wins
c2 = 1 # player 0 wins outright
# Now we check if these suppositions are true:
for p1 in points:
if (p1 != 0) and points[p1] >= points[0]:
c2 = 0 # does not win outright; p1 has the same number of points or more points than player 0
break
for p1 in points:
if (p1 != 0) and points[p1] > points[0]:
c1 = 0 # does not win; p1 has more points than player 0
break
print("Player 0 wins: ", 1==c1)
print("Player 0 wins outright: ", 1==c2)
player_0_wins = player_0_wins + c1
player_0_wins_outright = player_0_wins_outright + c2
print()
print()
print()
print("Player 0 wins outright probability: ", player_0_wins_outright, '/', len(mp))
print("Player 0 shares the win probability: ", player_0_wins - player_0_wins_outright, '/', len(mp))
print()
print()
print()
if __name__ == "__main__":
main()
No comments:
Post a Comment