Library · Geometric Probability · Chapter 19
Stevens’s covering theorem
Problem 19.1
Let arcs, each of length (with ), be placed independently and uniformly on a circle of circumference . What is the probability that the union of the arcs covers the entire circle?
Solution. The complement of the union of arcs consists of the gaps between consecutive arc-endpoints that are not covered. The whole circle is covered iff every such gap is , equivalently iff the distances between consecutive arc centres (when sorted cyclically) are all .
For , the covering probability is when and when . This case is handled separately to avoid the ambiguous endpoint power .
Suppose now that . Anchor the cyclic order at the centre of a labelled arc and let be the clockwise gaps between successive centres. Rotating that centre to leaves independent uniform positions, so the gap vector is uniform on the simplex , .
The circle is covered iff every . For a fixed set of gaps, the event that each exceeds translates those coordinates by . The remaining simplex has total length and dimension , so its probability is , where . Inclusion–exclusion over the events gives Stevens’s formula: Terms with vanish, so this is equivalent to the usual sum truncated at . For : (two arcs of length exactly fill the circle only on a measure-zero configuration). For : . ■
import numpy as np
# For n arcs of length a, covered iff all gaps between sorted centres are <= a
# (where "wrap-around" gap is c_1 + 1 - c_n).
n, a, N = 3, 0.5, 10**6
centres = np.sort(np.random.rand(n, N), axis=0)
gaps = np.diff(centres, axis=0)
wrap = centres[0] + 1 - centres[-1]
all_gaps = np.vstack([gaps, wrap[None, :]])
covered = (all_gaps <= a).all(axis=0)
print(f"sim: {covered.mean():.5f} exact (Stevens): 0.25")
# sim: 0.24963 exact: 0.25000