Every random draw builds an S×S community matrix A with Aii=0 and, independently for each ordered pair, Aij ~ Normal(0, σ²) with probability C (connectance) and 0 otherwise. Linearized near equilibrium, the full Jacobian is J = A − d·I, so the web is locally stable exactly when every eigenvalue of A has real part below the self-regulation strength d.
The eigenvalues of A are computed with a real numerical algorithm implemented from scratch in this page — no linear-algebra library: first a Householder reduction to upper Hessenberg form, then the classic Francis implicit double-shift QR algorithm with Wilkinson-style ad-hoc shifts and deflation, which drives the Hessenberg matrix to real Schur form. 1×1 diagonal blocks give real eigenvalues directly; 2×2 blocks are solved in closed form for a complex-conjugate pair. This is the same method (essentially EISPACK's hqr) used inside production numerical libraries.
Robert May's 1972 result (via Girko's circular law for large random matrices) is that the S eigenvalues of A fill, approximately, a disc of radius σ√(S·C) centered at the origin — drawn as the dashed circle. The stability boundary Re(λ)=d is the solid vertical line. May's complexity-stability criterion:
σ · √(S · C) < d → web expected STABLE
σ · √(S · C) ≥ d → web expected UNSTABLE
Reseed draws one fresh random matrix and plots its actual eigenvalues. Live sampling keeps drawing new random matrices continuously and accumulates the empirical fraction of draws with max Re(λ) < d, so you can watch the observed frequency converge toward the theoretical prediction — a direct statistical check of May's criterion, not just a formula. (Real food webs are not fully random — predator-prey sign structure is more stabilizing than pure randomness, a refinement due to Allesina & Tang, 2012 — but the connectance/strength trade-off shown here is the one driving both results.)