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: