Probability of one horse finishing ahead of another In a 5 horse race.  Lets say the probability of a horse to win the race are as follows:
Horse A : 25%
Horse B : 4%
Horse C : 35%
Horse D : 10%
Horse E : 26%
How would you determine the probability of Horse E finishing the race in front of Horse C ? i.e. (Horse E could come 4th and Horse C 5th).
Is there a method for determining the probability given the information available ?
 A: This is similar to Christian Hennig's answer.
If you make the strong assumption that the probabilities are in effect weights, and the first horse is sampled with probabilities proportional to the weights of all the horses, the second horse sampled with probabilities proportional to the weights of all the horses except that already selected as the first horse, and so on, then the answer to your question is simple, namely $$\frac{P(E)}{P(E)+P(C)}= \frac{26\%}{26\%+35\%}=\frac{26}{61}\approx 0.426$$ since, if at any stage neither E nor C have been sampled yet and one of them is sampled at that stage, the probability that it is E is $\frac{26}{61}$ and that it is C is $\frac{35}{61}$.   Other assumptions about horses which do not come first finish would produce different results.
This is how R's sample() function does weighted samples without replacement, so it is easy to simulate, for example with
positions <- function(probs){  
  h <- names(probs)
  result <- sample(h, prob=probs)
  c(which(result == h[1]), which(result == h[2]), which(result == h[3]), 
    which(result == h[4]), which(result == h[5]))  #  positions in simulation
  }

set.seed(2023)
probsABCDE <- c("A"=0.25, "B"=0.04, "C"=0.35, "D"=0.10, "E"=0.26)
sims <- replicate(10^5, positions(probsABCDE))
rownames(sims) <- names(probsABCDE)
rowMeans(sims == 1) # who comes first
#       A       B       C       D       E 
# 0.24825 0.04160 0.34847 0.09984 0.26184 

which is close to the original probabilities allowing for simulation noise.
Actually addressing the question of the probability of Horse E finishing the race in front of Horse C, the simulated probability is close to the theoretical probability allowing for simulation noise:
mean(sims["E",] < sims["C",])
# 0.42862
probsABCDE["E"] / (probsABCDE["E"] + probsABCDE["C"]) 
# 0.4262295

A: The given information is not enough to compute these probabilities in general, because it may be that for example Horse C is of a kind that it either wins or gets frustrated and finishes last. But it may also just be the best horse and if it doesn't win it may be very likely that it comes second. Which of these is the case is not captured by the data you have.
The problem can be solved making a simplifying assumption that in reality not may b0e true, even though it doesn't look wildly unrealistic either. The assumption I'm thinking of is that we assume that for all ranks the relative probability of any horse finishing on a lower rank assuming that certain given horses occupy the higher ranks is the same among the horses that don't yet have finished.
This for example implies that the probability for Horse A being second given that we know Horse C has won is $\frac{25}{25+4+10+26}=\frac{25}{100-35}=38.5\%$.
This assumption will determine the probabilities for all possible rankings, which can be fully computed using a fairly simple computer program (but complicated enough that I won't take the time to write it for you), going down from rank 1. One can then add all probabilities for cases in which E is ahead of C (or write the program so that it only computes those).
There may be a simpler way of doing this, but if nobody else explains it, here you are.
PS: The answer by Henry uses the same assumption, and it looks like $\frac{26}{61}$ is the result even without running a program.
A: Let $p_i$, $i=1,2,\dots,n$ denote the probabilities that each horse wins given in the problem statement.  A model that leads to simple calculations is to assume that some monotonically decreasing transformation $Z_i$ of the race times $T_i$ follow exponential distributions with rate parameters $\lambda_i=p_i$.  For instance, this would be consistent with the assumption that the race times follow Gumbel distribution with different locations which is perhaps not entirely unrealistic.
The probability that horse $i$ wins is then the probability that $Z_i$ is the smallest order statistic which indeed clearly is $\lambda_i/\sum_{j=1}^n \lambda_j=p_i$.
By the product rule and and the memoryless property of the exponential distribution the probability of a particular ranking $(\sigma(1),\sigma(2),\dots,\sigma(n))$ is
$$
\prod_{i=1}^n\frac{p_{\sigma(i)}}{\sum_{j=i}^n p_{\sigma(j)}}.
$$
The following R code verifies that the probabilities of all rankings computed this way sums to 1:
library(combinat)
#> 
#> Attaching package: 'combinat'
#> The following object is masked from 'package:utils':
#> 
#>     combn
revcumsum <- function(x) 
  rev(cumsum(rev(x)))
probranking <- function(sigma, p) {
  n <- length(p)
  prod(p[sigma]/revcumsum(p[sigma]))
}
p <- c(.25,.04,.35,.1,.26)
n <- length(p)
sum(unlist(permn(1:n, probranking, p = p)))
#> [1] 1

