The Monte Carlo sheet 12/9/47
The flow diagram for ENIAC's first Monte Carlo neutron run, transcribed box by box and running below on ENIAC's own arithmetic: a 10-digit middle-square generator, random numbers sliced into digit fields, and a free path computed by doubling and a three-term series.
The sheet, lit by a running neutron
The scan itself, with each box lit as the emulator passes through it. Press Walk to follow the first neutron of the current batch step by step, or hover a box to see its reading.
The run’s findings
Eight predictions were written and hashed before any code ran. The test object is a bare U-235 sphere from the Los Alamos one-group criticality benchmark set (Ua-1-0-SP: ν = 2.70, Σt = 0.3264 cm⁻¹, critical radius 7.428998 cm). That is fast, bare and critical like Godiva, with an exact answer to grade against. Three codes run it: the sheet emulator, an independent modern Cartesian Monte Carlo, and a deterministic Peierls integral-equation solve.
Which ENIAC shortcut moves k
k at the exact critical radius, ±1σ. Each row adds one sheet numerics feature to a good random generator. Dashed line: Peierls k = 1.
Where 1,000 middle-square seeds end up
Draws until the 10-digit stream first repeats. Every seed falls into one of four cycles; more than half end stuck at 0000000000.
One stream, never reseeded
k per generation for 20 single middle-square streams, 1,000 neutrons a generation. Streams that reach 0 or the 500-cycle (which ends in five zeros) stop producing free paths shorter than 9.9 mean free paths, every neutron escapes, and the chain dies.
Time census: growth rate α
Population growth per unit of flight path, from census-to-census counts. Modern code vs the sheet (with a fresh ρ on census cards; as literally read, census runs collapse).
Round two: Godiva physics, the real generator, the clock
Nine more predictions, hashed first. Three readers transcribed the scan independently of my reading; a 10-group HEU cross-section set was collapsed from ENDF point data so the sheet's velocity-table lookup, elastic kinematics (52*) and inelastic box (54*) all run; the 1948 "Actual Running" report settled which generator they used; and the sheet's operations were costed at ENIAC's speeds.
Same ladder on HEU
k at the multigroup critical radius, ±1σ, 1.6 million histories each. The as-drawn bias shrinks from +0.034 on the textbook sphere to about +0.01, and its source moves to the 2-digit ν in 52*.
8 digits (first run) vs 10 (second run)
| Middle-square | 8-digit | 10-digit |
|---|
1,000 random seeds each (20,000 for the 8-digit cycle census). Klára von Neumann's report: the first run squared 8-digit numbers and restarted from the seed card every 2,000 squarings; the second used 10 digits and 3,000.
Where the ten days went
| ENIAC, April–May 1948 | Modelled |
|---|
Operation counts from the emulator (2.4 flights, 1.8 collisions, 2.8 ρ calls per neutron) priced at three speed regimes: the 1945 arithmetic unit, the 1948 converted code at 100 kHz, and the same at 60 kHz after 28 April.
The readers’ changes
Box 1.1* reads the new seed from column group H, not F. The fission-daughter counter in 38*/39* is q*, not g*. In 54* the speed factor φ uses one random digit and the root covers it: V** = √((V² − E)φ). The letter in 24* is a J. Box 3* tests the census window with + → skip the card, − → continue, which with zero counted as + would skip every fresh census card; that is the one open semantic question on the sheet. None of these moves a number in the emulator, and all three readers agree the census path draws no fresh random number.
The tweet, checked against the sheet
The thread's broad story holds. Several specifics do not match the sheet or the record in Haigh, Priestley and Rope's history of these runs.
| Claim | What the sheet or record shows | Verdict |
|---|
The sheet, box by box
Starred boxes (1*, 18* …) and barred boxes (1̄ … 26̄) are two separate numbering series, and degree boxes (1°–4°) are the free-path routine. ξ is a 10-digit fraction; ξ(9,8) means its 9th and 8th digits read as 0.d₉d₈.
Sources: T. Haigh, M. Priestley, C. Rope, "Los Alamos Bets on ENIAC: Nuclear Monte Carlo Simulations, 1947–1948," IEEE Annals of the History of Computing 36(3), 2014 (PDF); the same authors' ENIAC in Action (MIT Press, 2016); A. Sood, R. A. Forster, D. K. Parsons, "Analytical Benchmark Test Set for Criticality Code Verification," LA-13511 (1999). The diagram scan is the one shared in the thread. Code, preregistration (sha256 57a5cac0…), results and transcription live in the project's eniac-monte-carlo folder. The browser bench runs a reduced, k-only version of the emulator; the graded numbers come from the full Python runs.