# Probability of each team placing in each position

I've been thinking about this for a while, and haven't been able to figure it out. My math teachers haven't been able to, either.

You have N teams, and each team has P players. Each player plays a (singleplayer) game, and has a W% chance of winning (each player has a different chance of winning, and this winrate is known beforehand). Let's set up an example scenario with 3 teams and the winrates of their players:

Team A: 50%, 40%, 40% Team B: 60%, 40%, 30% Team C: 90%, 50%, 20%

Whichever team gets the most wins wins the competition overall. If two teams tie for first, they both get first place and the remaining team gets third. If all three tie, they all get first place.

How do you determine, for this example, the chance for each team to get first, second, and third place? How would you determine this for any given variables in place of the ones used in this example?

• If the players play against each other, the question is not answerable because it depends on who plays whom and how you determine the chances of winning in those matches. Consider the example you give: with nine players there will be nine games and how could that be accomplished when players play each other? Note, too, that the expected number of wins is 50% + 40% + ... + 20% = 4.2, but how could that be anything other than half the number of games played? This just makes no sense. Could you clarify how the tournament works?
– whuber
Feb 12, 2019 at 18:32
• The games are not played against one another. You can treat it as if the games are singleplayer. Feb 12, 2019 at 19:55

Here is a result using simulations (in R)

w=c(0.5,0.4,0.4,0.6,0.4,0.3,0.9,0.5,0.2)
res=apply(t(w),2,function(x){
ifelse(runif(1e5)<x,1,0)
})

res2=apply(res,1,function(x){
c(sum(x[1:3]),sum(x[4:6]),sum(x[7:9]))
})

res3=apply(-res2,2,rank,ties.method="min")

First team:

prop.table(table(res3[1,]))

1       2       3
0.46692 0.29580 0.23728

Second team:

prop.table(table(res3[2,]))

1       2       3
0.46161 0.30760 0.23079

Third team:

prop.table(table(res3[3,]))

1       2       3
0.63170 0.27151 0.09679