How fast does the bell curve arrive — and what controls the speed at which a pile of coin flips becomes Gaussian?
Units: dimensionless (log–log convergence exponent of the symmetric board's pointwise gap; secondary knowns: −1 biased, −1/2 CDF, amplitudes φ(0)/2 = 0.1994711 and φ(0) = 0.3989423, Edgeworth prefactor M|1−2p|/(6pq) with M = 0.54763, Lévy exponent 1/α = 2/3)
▶ Run this simulationRead how it works
The bell curve's approach speed, read off a Galton board built from nothing but peg-counting: with the generator coding ONLY the two-point peg kernel convolved row by row (no binomial coefficients, no np/npq, no Gaussian), the distribution's own moments land on np and npq to 1e-13 and the pointwise gap to the Gaussian limit falls at slope −1.49996 vs the known −3/2 on a symmetric board — NOT the textbook-universal 1/√n — with its parameter-free amplitude n^{3/2}Δ = 0.199465 vs φ(0)/2 = 0.199471 (3e-5); bias the board and the vanished skewness term reappears, dropping the rate to slope −1.002 with amplitude pinned by the Edgeworth prefactor M|1−2p|/(6pq) to 0.2–0.6% across p = 0.2–0.4, while the CDF sup-gap falls at −0.500 at EVERY p (Esseen's skew-blind lattice term, amplitude φ(0) to 7e-5) — three different exponents from one counted distribution; the live 12-seed × 40000-ball board lands on np and √npq within 1.2σ/0.8σ and the &seed=7 display digits are bit-pinned + scrape-verified; the rival 'aggregation always makes a Gaussian' is falsified by swapping in an infinite-variance step: the same machinery flows to a Lévy width exponent 0.650 ≈ 1/α = 2/3 with a permanent 1.4e-2 fat tail while the board's own ±1 steps give 0.503 and zero tail — finite variance is the CLT's load-bearing hypothesis
Generator = pure peg-counting: the exact bin distribution after n rows is built ONLY by convolving the single-peg two-point kernel row by row, P_{r+1}(k) = (1−p)·P_r(k) + p·P_r(k−1) — no binomial coefficients, no moment formulas, no Gaussian, no Edgeworth/Esseen theory in the generation. The Gaussian enters only as the measuring stick (the limit whose distance is the observable), with μ̂ and σ̂² summed from the counted distribution itself. Measure along the dyadic ladder n = 64…4096: (A) the counted moments against np/npq (emergence gate); (B) total-variation distance to the Gaussian (the CLT itself: monotone → 0); (C) the pointwise gap Δ_pmf(n) = max_k|P_n(k) − N(μ̂,σ̂²)(k)| and its last-rung log–log slope at p = ½ (headline) and p = 0.3; (D) the CDF sup-gap slope at both p; (E) the parameter-free amplitudes n^{3/2}Δ → φ(0)/2 (the He₄ Edgeworth term) and √n·Δcdf → φ(0) (Esseen's half-jump); (F) a bias sweep p ∈ {0.2, 0.3, 0.4} whose amplitude must track the Edgeworth prefactor M|1−2p|/(6pq) — a ×4.5 parameter-free swing; (G) the live board: 12 seeds × 40000 balls through the module's verbatim counted mulberry32 stream, pooled mean/std vs theory SE, per-seed histogram TV vs the counted distribution, and the exact held display strings at &seed=7 (module toFixed formatting), scrape-verified against the running app's DOM; (H) the rival: the same summing harness with an infinite-variance step P(±j) ∝ j^{−2.5} (α = 1.5), whose MAD width exponent and tail mass must land on the Lévy stable law, not the Gaussian. All known numbers (−3/2, −1, −1/2, φ(0)/2, φ(0), M, 2/3) loaded from the reference only to score.
de Moivre–Laplace with its Edgeworth refinement: P(k) = (1/σ)φ(x)[1 + (γ₁/6)(x³−3x) + O(1/n)], γ₁ = (1−2p)/√(npq) — the skew term sets the 1/n biased rate and vanishes at p = ½, exposing the n^{−3/2} He₄ term; Esseen's lattice term floors the CDF sup-gap at φ(0)·h/(2σ) ∝ n^{−1/2} at every p
32/32 pass in ~4 s (A–L science + M–Q honest-module certification); tamper (known_value → −1.25) ⇒ exit 1 with recovered slope unchanged (gates C and O both catch it — two scoring surfaces, one recovery)
The de Moivre–Laplace theorem (1733/1812) — the original central limit theorem — plus its modern rate refinements: the Edgeworth local expansion (Petrov 1975 Ch. VII; Feller Vol. 2 Ch. XVI) for the pointwise −3/2 (symmetric) vs −1 (biased) split and the parameter-free amplitudes φ(0)/2 and M|1−2p|/(6pq), Esseen (1945) for the lattice n^{−1/2} CDF floor with amplitude φ(0), and Gnedenko–Kolmogorov (1954) for the Lévy-stable control. Non-circular because the generator is a convolution of {1−p, p} and nothing else: binomial coefficients, np, npq, φ, the Edgeworth series and every target exponent live exclusively in the scorer — that the counted moments EQUAL np and npq is itself gated (1e-13), and the Gaussian yardstick takes its parameters from the counted distribution, not from formulas. The recovery is sharper than the usual 'histogram looks bell-shaped' demo by two orders: it measures the RATE of convergence, resolves that the rate switches regime when a single symmetry (skewness) is broken, and pins four parameter-free amplitudes to 3e-5–6e-3. The rival is falsified structurally, not statistically: infinite-variance steps in the identical harness scale at n^{2/3}, ten seed-SDs from √n, with a permanent 1.4e-2 tail where the Gaussian holds 1.7e-6 — the finite-variance hypothesis of the CLT demonstrated by breaking it. Limits: the exponents are recovered for the Bernoulli/lattice family this board physically realizes (plus the α = 1.5 heavy-tail control), not for arbitrary step laws; the biased-slope tolerance 0.01 reflects the O(n^{−1/2}) Edgeworth-ratio correction still visible at n = 4096 (measured offset 2–4e-3, disclosed); the Lévy exponent is measured on a truncated (j ≤ 2000) step law, whose known pull below 2/3 is disclosed and bracketed, and MAD is used as the width statistic because the even-integer lattice distorts IQR at these n (measured: IQR gives 0.37 for the ±1 control — a lattice artifact, not physics).
The on-screen GaltonModule displays the SAME observables the oracle gates: the live histogram's running mean/std against np/√npq, the max pointwise gap vs the Gaussian overlay, and the log-log convergence chart with its own fitted slope now printed ('fit −1.49' at p=½). Two disclosed screen-vs-oracle deltas: (1) the chart fits the small-n display range 4…256 where Edgeworth curvature makes the symmetric fit read −1.49 (−0.55% from the asymptotic −3/2) and a biased board read −1.05 (+5% from −1) — the oracle gates the 2048→4096 rung where the corrections are O(1/n); (2) the on-screen max|Δ| (0.0061 at seed 7) was previously described as noise-dominated — the certification MEASURED the split (7th overclaim caught by execution): the deterministic binomial-vs-Gaussian gap at the board's own n=16 is 3.09e-3, a full 51% of the shown value (the 1e-5 scale belongs to the n=4096 ladder rung, a different n), the remainder noise-borne with seed 7 at z=+1.14 in the 12-seed scatter 0.00443±0.00148. The counted histogram consumes mulberry32(seed) exclusively (cosmetic falling balls moved to a separate stream this run), so the held display digits at any seed are bit-reproducible headless — gate K pins seed 7 and a playwright scrape of the running app confirmed mean/std/max|Δ|/fit = 7.999/2.010/0.0061/−1.49 verbatim.
npm run derisk -- galton (scripts/galton-derisk.mjs)scripts/oracles/galton.reference.jsonA. de Moivre, 'Approximatio ad Summam Terminorum Binomii (a+b)^n in Seriem expansi' (1733); P.-S. Laplace, 'Théorie analytique des probabilités' (1812); F. Galton, 'Natural Inheritance' (1889) — the quincunx. Rates: V. V. Petrov, 'Sums of Independent Random Variables' (1975) Ch. VII; W. Feller, 'An Introduction to Probability Theory and Its Applications' Vol. 2 Ch. XVI; C.-G. Esseen, 'Fourier analysis of distribution functions', Acta Math. 77 (1945). Control: B. V. Gnedenko & A. N. Kolmogorov, 'Limit Distributions for Sums of Independent Random Variables' (1954).