Library · Geometric Probability · Chapter 19

Stevens’s covering theorem

Revised Report an error

Problem 19.1

Let n≥1n \geq 1 arcs, each of length aa (with 0<a≤10 < a \leq 1), be placed independently and uniformly on a circle of circumference 11. What is the probability that the union of the nn 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 ≤0\leq 0, equivalently iff the distances between consecutive arc centres (when sorted cyclically) are all ≤a\leq a.

For n=1n=1, the covering probability is 00 when a<1a<1 and 11 when a=1a=1. This case is handled separately to avoid the ambiguous endpoint power 000^0.

Suppose now that n≥2n\geq2. Anchor the cyclic order at the centre of a labelled arc and let G1,…,GnG_1,\ldots,G_n be the clockwise gaps between successive centres. Rotating that centre to 00 leaves n−1n-1 independent uniform positions, so the gap vector is uniform on the simplex Gi≥0G_i\geq0, ∑iGi=1\sum_iG_i=1.

The circle is covered iff every Gi≤aG_i\leq a. For a fixed set of kk gaps, the event that each exceeds aa translates those coordinates by aa. The remaining simplex has total length 1−ka1-ka and dimension n−1n-1, so its probability is (1−ka)+n−1(1-ka)_+^{n-1}, where (y)+=max⁡(y,0)(y)_+=\max(y,0). Inclusion–exclusion over the events {Gi>a}\{G_i>a\} gives Stevens’s formula: P(covered)=∑k=0n(−1)k(nk)(1−ka)+n−1.\mathbb{P}(\text{covered}) = \sum_{k=0}^{n}(-1)^k\binom{n}{k}(1-ka)_+^{n-1}. Terms with ka≥1ka\geq1 vanish, so this is equivalent to the usual sum truncated at ⌊1/a⌋\lfloor1/a\rfloor. For (n,a)=(2,12)(n, a) = (2, \tfrac12): ∑=1−2⋅12+0=0\sum = 1 - 2 \cdot \tfrac12 + 0 = 0 (two arcs of length 12\tfrac12 exactly fill the circle only on a measure-zero configuration). For (n,a)=(3,12)(n, a) = (3, \tfrac12): ∑=1−3⋅(12)2+0=14\sum = 1 - 3 \cdot (\tfrac12)^2 + 0 = \tfrac14. ■

Five arcs of length a = 1/4 placed on a unit-circumference circle at centres \{0.06, 0.28, 0.45, 0.63, 0.85\} . All consecutive gaps between arc centres are \leq a , so the arcs cover the whole circle.
Five arcs of length a=1/4a = 1/4 placed on a unit-circumference circle at centres {0.06,0.28,0.45,0.63,0.85}\{0.06, 0.28, 0.45, 0.63, 0.85\}. All consecutive gaps between arc centres are ≤a\leq a, so the arcs cover the whole circle.
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
Report an error on this page

Reports are stored by Netlify. See the privacy note.