Library · Geometric Probability · Chapter 17
Smallest gap among random points on a circle
Problem 17.1
Let be independent uniform random points on a circle of circumference . What is the expected value of the smallest gap between consecutive points (measured along the circle)?
Solution. Anchor the cyclic order at one labelled point, and let be the clockwise gaps from that point onward. Rotating the anchor to leaves independent uniform positions; their spacings have the uniform Dirichlet distribution. By exchangeability, each has the same marginal distribution and , so .
To find , start from the classical identity Why: the event “every gap exceeds ” means every gap has an initial length- “buffer.” Subtracting these buffers leaves a total free length of , distributed as uniform spacings on a circle of circumference . By scale invariance this has density proportional to a Dirichlet(1,…,1), whose joint density is , and integration over the simplex gives the factor .
Compute the expectation by integrating the tail: Substitute , : Hence
For the expected minimum gap is ; for it is . Asymptotically, the smallest gap is of order , far below the average gap — a reflection of the “bunching” property of uniform random points. This is the content of the classical small-spacing heuristic that underlies the probabilistic theory of matching and birthday-type problems.
import numpy as np
for n in [3, 5, 10]:
pts = np.sort(np.random.rand(n, 10**6), axis=0)
gaps = np.diff(pts, axis=0)
wrap = pts[0] + 1 - pts[-1]
all_gaps = np.vstack([gaps, wrap[None, :]])
print(f"n={n}: sim={all_gaps.min(axis=0).mean():.5f} exact={1/n**2:.5f}")
# n=3: sim=0.11112 exact=0.11111
# n=5: sim=0.04000 exact=0.04000
# n=10: sim=0.01000 exact=0.01000