# How to equalize the chance of throwing the highest dice? (Riddle)

I just invented the following riddle, doing statistics work. (I actually need the answer!)

Riddle:

Imagine a dice game with the aim of throwing the highest dice. The dice are special and have infinite sides with numbers ranging from 0 to 1! (uniform, no bias)

There are 2 players: Player-A has 3 dice to throw, player-B has 7 dice. This means player-B has a chance of 7/10 of winning, which is to throw the highest number of all 10.

Now, to bring fairness to the situation, the players agree to multiply each number thrown by player-A by a certain constant. What is the value of this constant, so that each player has a 50% chance of winning?

Can you find a general formula to determine this constant, based on the amounts of dice the 2 players have?

(And in case this is a known problem: Do you know how this is called?)

Considerations/ Spoiler: The adjustment-constant does not just depend on the ratio of throws (3:7 in this case); instead, the absolute number is important. For example, if the players had 300 and 700 throws, then this constant would be much closer to 1.

My intuition: I think a good estimate is to assume a homogeneous distribution of the throws: For example the 3 throws are at decimals 0.25, 0.5 and 0.75! Now the highest number would be 0.75! Do the same with player-B and you get the ratios of the expected highest numbers (-> the adjustment-constant). Unfortunately that's just my intuition and I am not sure if this is correct.

EDIT: I am thankful for all the answers but surprised that nobody used an approach similar to my described one. For completeness, here I explain where I was wrong:

I assumed the expected maximum of throws would be 1-1/(n+1), which is correct, as simulated by the following script:

import numpy as np import matplotlib.pyplot as plt

x,y,y2 = [],[],[] for n in range(1,21):
x.append(n)
y2.append(1-1/(n+1))
temp = []
for _ in range(10000):
sample = np.random.random_sample(n,)
temp.append(max(sample))
y.append(np.mean(temp))

plt.scatter(x,y)
plt.plot(x,y2)
plt.title("Mean max = 1/(n+1)")
plt.xlabel("Number of throws")
plt.ylabel("Mean max of throws")
plt.show() Which means, if we used a constant c to multiply each of the n throws of player A, the expected maximum would be equal to the m throws of player B, if we use this formula for c:

But this is wrong, because the riddle does not try to equalize the mean of the maxima. Instead it wants to equalize the rank-sum of the 2 players distributions of maxima. (if we ranked each maximum throughout both distributions)

Here, just for illustrative purposes, I show how my formula is unable to accurately fit the median of maxima: • This question is answered by comparing the two Beta distributions involved, because both maxima follow Beta$(n,1)$ distributions (for different $n$).
– whuber
Nov 20, 2019 at 17:56
• @Dougal Right--I realized that the moment I posted my original comment.
– whuber
Nov 20, 2019 at 17:59
• I see. Real data of that format would follow a beta-distribution that I would need to evaluate. (Thanks I learned something!) But in this case, I don't think there is a need for a beta distribution! Just assume a fully homogeneous distribution! Nov 20, 2019 at 18:11
• I'm posting my solution for comparison without derivation. Denote $m$ is the number of dice for the player with more dice and $n=xm$ is the number of dice of the other player. The multiplicative constant is then $c = 2^{(1/n)}(1 + x)^{-(1/n)}$. Setting $m = 7, n=3$ and $x = 3/7$ we get $c = (7/5)^{(1/3)}$. Nov 20, 2019 at 19:30
• @COOLSerdash, I have posted an answer containing an exact solution which is in perfect agreement with your comment. Nov 20, 2019 at 19:46

### Multiply by $$\left(\frac{2(7)}{3+7}\right)^{1/3} = 1.1187$$

More generally, suppose that player $$A$$ rolls $$n$$ times and player $$B$$ rolls $$m$$ times (without loss of generality, we assume $$m \geq n$$). As others have already noted, the (unscaled) score of player $$A$$ is $$X \sim Beta(n, 1)$$ and the score of player $$B$$ is $$Y \sim Beta(m, 1)$$ with $$X$$ and $$Y$$ independent. Thus, the joint distribution of $$X$$ and $$Y$$ is $$f_{XY}(x, y) = nmx^{n-1}y^{m-1}, \ 0 < x, y < 1.$$

The goal is to find a constant $$c$$ such that

$$P(Y \geq cX) = \frac{1}{2}$$.

This probability can be found in terms of $$c$$, $$n$$ and $$m$$ as follows.

\begin{align*} P(Y \geq cX) &= \int_0^{1/c}\int_{cx}^1 nmx^{n-1}y^{m-1}dydx \\[1.5ex] &= \cdots \\[1.5ex] &= c^{-n}\left\{\frac{m}{n+m} \right\} \end{align*}

Setting this equal to $$1/2$$ and solving for $$c$$ yields

$$c = \left(\frac{2m}{n+m}\right)^{1/n}.$$

• (+1) Great! May I ask how you found the limits of integration for the joint density? Nov 20, 2019 at 20:09
• @COOLSerdash it is scanning the triangle where y < cx. You can do this in two directions. This one scans the lines cx < y < 1. And x goes from 0 to 1/c. Nov 20, 2019 at 20:20
• This is actually the integral for $P(y > cx)$ Nov 20, 2019 at 20:27
• This is another way $$P(Y \geq cX) = \int_0^{1} \left( \int_{0}^{y/c} nmx^{n-1}y^{m-1}dx \right) dy$$ Nov 20, 2019 at 20:30
• @SextusEmpiricus Thanks! With your hint about the triangle, I was able to work out the other way just now. Many thanks. Nov 20, 2019 at 20:32

I don't believe that a linear scaling factor will equalize the odds, or at least I cannot determine one. However, there is a power factor that can.

If you raise player-A's score to the $$\frac{3}{7}$$ you should have a fair game. Obviously, since scores are between 0 and 1, raising it to a power of between 0 and 1 (not inclusive) will actually increase it.

Why?

The way I figure it, the probability of a score not exceeding $$S$$, is equal to $$1 - S^n$$.

If we set $$1 - S_1^{n_1} = 1 - S_2^{n_2}$$

$$1-S_1^{n_1}=1-S_2^{n_2}$$ $$S_1^{n_1}=S_2^{n_2}$$ $$n_1 log(S_1) = n_2 log(S_2)$$ $$log(S_1) = \frac{n_2}{n_1} log(S_2)$$ $$S_1 = S_2^{\frac{n_2}{n_1}}$$

• Of course there exists a solution, because the chance that one extreme exceeds another is a continuous function of the multiplier. But your suggestion is a more natural (and far simpler) solution to the underlying problem of making the game fair. (+1)
– whuber
Nov 20, 2019 at 17:57
• Logical and straight forward approach! (+1) Now may I ask a follow up-question? Is there any way of equalizing the 2 players chances if instead of a uniform distribution from [0,1], the dice sides had an unknown distribution of positive numbers? I suspect it's theoretically impossible without knowing the distribution of possible throws, but I would like to know your thoughts. Nov 25, 2019 at 11:09
• Thanks @KaPy3141, unfortunately, I think it would have to depend upon the distribution. And in some cases, you might not be able to scale to a fair game. Imagine if the distribution is just 50% chance of 0 and 50% chance of 1. Any scaling of the one with fewer immediately reduces it to just if they get a single 1. Nov 26, 2019 at 13:16
• Yes, that's true, I fully agree! Nov 26, 2019 at 13:25

I'd like to try to put pieces of comments and answers together into a simulation, and into a plan for an analytic solution.

As @whuber says in his Comment, the maximum $$X_1$$ of three independent standard uniform random variables has $$X_1 \sim \mathsf{Beta}(3,1)$$ and the maximum $$X_2$$ of seven independent standard uniform random variables has $$X_2 \sim \mathsf{Beta}(7,1).$$ This is easy to prove analytically.

Then, as implied by @MikeP's Answer, $$X_1^{3/7} \sim \mathsf{Beta}(7,1).$$ This is also easy to prove analytically. Thus $$X_2$$ and $$X_1^{3/7}$$ have the same distribution.

Below are simulations in R of the distributions of $$X_1, X_2,$$ and $$X_1^{3/7},$$ each based on samples of size $$100\,000.$$ Histogams show the simulation results along with the density functions of $$\mathsf{Beta}(3,1)$$ [red curve] and $$\mathsf{Beta}(7,1)$$ [blue], as appropriate.

set.seed(1120)
x1 = replicate(10^5, max(runif(3)))
mean(x1)
 0.7488232     # aprx E(X1) = 3/4
par(mfrow=c(1,3))
hist(x1, prob=T, col="skyblue2")

x2 = replicate(10^5, max(runif(7)))
mean(x2)
 0.8746943     # aprx E(X2) = 7/8
hist(x2, prob=T, col="skyblue2")

mean(x1^(3/7))
 0.8743326     # aprx 7/8
hist(x1^(3/7), prob=T, col="skyblue2")
curve(dbeta(x,7,1), add=T, col="blue", n = 10001)
par(mfrow=c(1,1)) • Very nice. (+1) Check out my answer for an analytic solution. (: Nov 20, 2019 at 19:44
• This nicely shows how it would be wrong to just scale-up distribution x1 by factor 0.8746943/0.7488232. x1^(3/7) replicates the whole distribution, not just the mean. I learned a lot from this! Thanks a lot! (+1) Nov 21, 2019 at 12:04

I did not solve the problem analytically but I performed a simulation with 100 different $$a/b$$ ratios varying from 0.01 to 1. $$a$$ is the number of dice of player A and $$b$$ is the number of dice of player $$b$$. For each ratio I simulated 1000 games and computed the multiplicative constant.

For the dice I assumed a uniform distribution between 0 and 1.

If we take the same ratio the expected value for the multiplicative constant is the same. I tested with a ratio of $$0.5$$ timing $$a$$ and $$b$$ up to a factor of 2000. Here the results as scatter plot and density distribution • Nice! And what if you increased both players throws at constant ratio? Nov 20, 2019 at 18:15
• @KaPy3141 check my edit! Nov 20, 2019 at 18:29