Self-avoiding walk · the Flory exponent ν
If a random walk is forbidden from ever crossing its own path — the simplest model of a polymer that can't pass through itself — how much bigger does it get, and is the swelling a universal number?

▶ Run the simulationSee the measured result
Units: dimensionless (Flory exponent ν, ⟨R²⟩ ∝ N^{2ν}, 2-D square-lattice SAW; secondary knowns: RW ν = 1/2 exact, 3-D SAW ν = 0.587597(7))
How the lab tests it
Grow ensembles of walks on the lattice and measure the end-to-end size ⟨R²⟩ ∝ N^(2ν). Naive step-by-step growth biases ν, so weight each walk by its ROSENBLUTH factor W=∏(m_k/z) (m_k = free choices at step k) to recover the true self-avoiding ensemble; the log–log slope of ⟨R²⟩ vs N gives 2ν. Three live walkers paint self-avoiding paths until they trap themselves. The ordinary (crossing-allowed) walk is shown as a control.
What it checks
self-avoidance SWELLS the coil to a universal exponent: ν=¾ EXACTLY in 2-D (Nienhuis; Flory's 3/(d+2) is exact here) and ≈0.588 in 3-D, versus ν=½ for the ordinary random walk (⟨R²⟩∝N). The local 'never revisit' rule produces a long-range size change. Honest: the Rosenbluth correction is essential — naive kinetic growth undershoots to ν≈0.64; finite walk length (N≤60) leaves a few-% residual bias
Self-avoiding walk & Flory exponent calculator
A random walk of N steps wanders a distance proportional to √N, and that is one of the most reliable facts in physics. Forbid it from ever stepping on a site it has already visited — one purely local rule, the minimal model of a polymer that cannot pass through itself — and the walk stops obeying that law entirely. It swells, and it swells by a POWER: ⟨R²⟩ grows as N^{2ν} with ν larger than a half, so the coil is not a fixed factor bigger than a diffusing one, it is unboundedly bigger the longer the chain gets. That is what a change of universality class means, and it is why a local constraint counts as physics rather than as bookkeeping. This page computes the exponent instead of quoting it. Two free-energy scalings are declared and nothing else — the entropy cost of stretching a chain to size R goes as R²/N, and the cost of N monomers crowding into a volume R^d goes as N²/R^d — and minimising their sum in R matches the powers, leaving ν as a quotient of four small integers. In two dimensions that quotient is three quarters, and its decimal appears nowhere in this page's code; the gate checks that, because a dimensionless constant is exactly the kind no input can prove was derived. The same balance hands back two things it was never told. One is the ideal chain: drop the repulsion term and the exponent is a half, which needs no balance at all, only the observation that uncorrelated unit steps have vanishing cross terms and ⟨R²⟩ = Na² exactly. The other is the dimension where the two cross, d_c = 4 — the upper critical dimension, assembled here rather than remembered, above which self-avoidance stops mattering and the rival claim that 'a walk is a walk' becomes exactly true. So one parameter indexes both theories, which is the honest way to falsify one: this lab's pivot ensemble measures ν = 0.74939 ± 0.00331 in two dimensions and, with the constraint switched off and every other line of the estimator identical, 0.50031 ± 0.00028 — hundreds of standard errors apart in both directions, and the page says so only where the separation actually clears the oracle's own fifty-sigma bar, which it stops doing as d approaches four. Three directions read the page backwards. The inversion turns a target size into a monomer count and defaults to the module's OWN reading of 0.74731 rather than the exact value, then inverts the balance a second way to report what that reading implies: a walk in 2.0144 dimensions, which is a more useful way to read a 0.36% bias than calling it a rounding. The screen audit prices three numbers this lab displayed against the biases its own finding discloses for them — the pivot headline, the three-dimensional line, and the oracle's uncorrected slope — and the three residuals differ by a factor of thirty for a reason worth printing: they are the roundings of the disclosures themselves, and a bias quoted to one decimal of a per cent cannot return an exponent better than a thousandth. Four things this page will not do. It refuses an amplitude, because Flory's balance gets the exponent right and the prefactor wrong and ⟨R²⟩ amplitudes are non-universal lattice quantities in any case. It refuses to convert an end-to-end distance into a radius of gyration, because the ratio between them is a universal amplitude this lab never measured. It refuses to back the exact exponent out of the two GROWTH samplers on its own screen — kinetic 0.6417, Rosenbluth 0.7345 — because nobody here resolved what those converge to: a bias you can divide by is a measurement, a discrepancy you cannot is a warning. And it refuses to claim Flory's argument is good. It is mean-field, both of its terms are poor, and the reason it is exact in two dimensions is that the errors cancel — which Nienhuis's Coulomb-gas solution of the O(n→0) model establishes in 1982 and the balance itself cannot. In three dimensions the cancellation fails and the same balance returns 0.6 against Clisby's 0.587597, which is why that number arrives here as an editable field and never as a line of code.
⟨R²⟩ ∝ N^{2ν} · Flory balance: minimise R²/N + N²/R^d in R ⇒ R ∝ N^{3/(d+2)} · ideal chain ⟨R²⟩ = Na² exactly (ν = 1/2) · swelling R_SAW/R_RW = N^{ν−1/2} · d ≥ d_c = 4: repulsion irrelevant, ν = 1/2