INTERACTIVE COMPANION · GROWTH BENCH · STATISTICAL PHYSICS
The Growth Bench
One particle at a time. Each one is released far from the seed, wanders at random until it touches what is already there, and freezes. Nothing in the rule says branch. The branching is what the rule produces anyway, because a tip that sticks out a little catches the next walker a little more often, and the advantage compounds until the arms are long and the bays between them never see a visitor.
Two benches below. The first grows the thing and lets you change the rule. The second measures it while it grows, and shows the fitted exponent walking toward a value you can compare against the published one. Both run the same code the article ran, transcribed from the Python line for line, with the same seeded generator, so the defaults land on the article's numbers rather than near them.
Model 1. Growing it
The rule, in full. Pick a random angle, drop a walker on a circle of radius \(R_{\max} + g\) where \(g\) is the release gap you set. Step north, south, east or west with probability \(1/4\) each. If the site you tried to step into is already occupied, freeze where you stand with probability \(p\); otherwise stay put and try again. If you drift outside the release circle, you are put back on it at the angle a two dimensional random walk would actually have returned at, sampled from the Poisson kernel, so nothing is ever thrown away.
Model 2. Measuring it while it grows
A mass fractal obeys \(N \propto R_g^{D}\). Take logs and that is a straight line with slope \(1/D\). Every time the cluster passes one of seventy log-spaced particle counts, the bench records \(\ln N\) and \(\ln R_g\), refits the line by ordinary least squares over the window you choose, and redraws. Watch the slope readout. It is noisy at first and then it walks, slowly, in one direction.
- Defaults
- p = 1, gap = 5, 8,000 particles, fit from N = 1,000, seed 20250704
- What the bench lands on
- D = 1.7736 ± 0.0075, slope 1/D = 0.56381, 33 points in the fit
- The cluster itself
- Rg = 71.2294, Rmax = 139.3592, A4 = 0.2956, 346.5 lattice steps per particle
- Across the five seeds
- 1.6878 to 1.7866, a spread of 0.0988
- Article, six clusters of 50,000
- 1.6992 ± 0.0172 by the same method
- Checked against
- a second, separately written Python transcription of this page, which returns the same Rg, Rmax, A4, step count, slope and D to every digit printed above
Three things worth trying
Set the sticking probability to 0.05 and restart. The cluster is denser, its radius of gyration falls from 71.2 to 43.1 lattice units, and the fitted D climbs to 1.8891. That is not a new universality class. It is a crossover: below some length scale the growth is compact, above it the ordinary branching resumes, and at 8,000 particles a reluctant cluster is still mostly inside its own compact regime. Grow it bigger and the exponent comes back down. Meakin reported in 1983 that the radius-of-gyration exponent is insensitive to sticking coefficient anywhere between 0.1 and 1, and that lowering it simply makes denser clusters.
Put the sticking probability back to 1 and move the release gap from 5 to 60. Each walker now has further to travel, so the build is slower. What comes out is a different cluster rather than a shifted one, because the extra travel consumes different random numbers, and its D of 1.8052 sits inside the seed-to-seed spread. That is the reinjection working. A walker that wanders past the release circle is put back on it at an angle drawn from the Poisson kernel instead of being thrown away, so the arrival statistics do not care where you started it.
Then change only the seed, five times, and read the five values of D: 1.6878, 1.7556, 1.7625, 1.7736, 1.7866. They disagree in the second decimal place. That width is the real precision of a single cluster this size. Anyone quoting a fractal dimension from one cluster to three decimals is quoting noise, and we include ourselves in that.