Books · The Fiddler: Solutions
Chapter 44
Can You Sprint to the Finish?
You and one rival approach the finish line. Each of you privately assesses your legs as a number uniform on , then decides whether to sprint. A sprinter always beats a non-sprinter; if both sprint, the fresher legs win; if neither sprints, it is a coin flip. Your rival’s manager has announced that the rival will sprint whenever their legs feel at least . Playing optimally, what is your chance of winning?
The Fiddler, Zach Wissner-Gross, July 25, 2025(original post)
Solution
Sprinting dominates: against a non-sprinter you win for certain (versus a coin flip if you also hold back), and against a sprinter you win with probability equal to your chance of fresher legs (versus a sure loss if you hold back). So the optimal rule is to always sprint, whatever your legs. With your legs and the rival sprinting only when their legs ,
The computation
Run the race: you always sprint, the rival sprints only on legs . Against a holding rival you win; against a sprinting one the fresher legs win. The win rate lands on .
import numpy as np
rng = np.random.default_rng(0); M = 8_000_000
y = rng.random(M); o = rng.random(M); op = o >= .5 # you always sprint
win = np.where(~op, 1.0, (y > o)*1.0) # vs non-sprinter win; else fresher legs
print(round(win.mean(), 5)) # 0.625 = 5/8
Extra Credit
Now three riders race. Both rivals sprint at or better. Your manager fills the blank in “sprint if your legs feel at least ” with a number chosen uniformly at random in . Before you draw that threshold and test your legs, what is your chance of winning?
Solution
Average over the random threshold , your legs , and the rivals’ legs. Since , you sprint with probability ; conditioning on the number of sprinting rivals ( with probabilities , each with legs ), (The source value is paywalled; this closed form is my own.)
The computation
Simulate the three-rider race directly: draw your random threshold and everyone’s legs, decide who sprints, and award the win to the sprinter with the freshest legs (a three-way coin flip when nobody sprints).
rng = np.random.default_rng(1); M = 8_000_000
t, y, o1, o2 = (rng.random(M) for _ in range(4))
ys = y >= t; s1 = o1 >= .5; s2 = o2 >= .5
legs = np.stack([y, o1, o2]); spr = np.stack([ys, s1, s2])
big = np.where(spr, legs, -1.0); anyone = spr.any(0)
youmax = (big[0] >= big[1]) & (big[0] >= big[2]) & ys
print(round(np.where(anyone, youmax*1.0, 1/3).mean(), 5)) # 0.3073 = 59/192