Library · Geometric Probability · Chapter 46
Sylvester’s four-point problem in a disc
Problem 46.1
Let be four points chosen independently and uniformly at random in a disc of radius . What is the probability that they form the vertices of a convex quadrilateral?
Solution. By the same dichotomy as in Chapters 43 and 45,
The expected triangle area for three uniform random points in a disc of radius is the classical constant This is due to Woolhouse (1867) and can be derived by polar-coordinate integration: conditioning on the distances of two of the three points from the origin, one reduces the calculation to a one-dimensional integral that eventually yields the expected area . As a fraction of the disc’s own area , this is (not , which is the area itself when ). (The computation is longer than those for the triangle and square cases, but entirely elementary.)
Substituting, Hence
Compared with the triangle () and the square (), the disc gives the largest convex-position probability among the three. Blaschke’s 1917 theorem says that among all convex regions of area , the triangle minimises this probability and the ellipse (or disc) maximises it. The extremal values and frame the entire range of Sylvester’s four-point problem over convex shapes.
import numpy as np
N = 10**6
# Uniform in unit disc via (sqrt(u), angle)
r = np.sqrt(np.random.rand(4, N))
t = np.random.rand(4, N) * 2*np.pi
u, v = r*np.cos(t), r*np.sin(t)
def inside_tri(pu, pv, au, av, bu, bv, cu, cv):
det = (bv-cv)*(au-cu) + (cu-bu)*(av-cv)
w1 = ((bv-cv)*(pu-cu) + (cu-bu)*(pv-cv)) / det
w2 = ((cv-av)*(pu-cu) + (au-cu)*(pv-cv)) / det
return (w1 > 0) & (w2 > 0) & (1 - w1 - w2 > 0)
any_in = np.zeros(N, dtype=bool)
for i in range(4):
j, k, l = [m for m in range(4) if m != i]
any_in |= inside_tri(u[i], v[i], u[j], v[j], u[k], v[k], u[l], v[l])
print(f"sim: {(1 - any_in).mean():.5f} exact: {1 - 35/(12*np.pi**2):.5f}")
# sim: 0.70427 exact: 0.70448