What determines a river? A drop of rain lands on a patch of ground, and the ground can either absorb it or pass it downhill if it is saturated. This transaction happens at all scales, from hillslope to basin to river to sea. Percolation theory relates how local, random connections merge to form a large-scale, system-spanning network (rivers in this example).
The simulation below shows how percolation can be used to determine a spanning river, which is based on the spatial density of rainfall (input flux) and ground storage capacity (output flux). Rain lands on each cell with probability \(p\), the ground can deplete a fixed amount \(C\), and the excess is handed off to one of two cells downhill (due to gravity), chosen at random (Scheidegger lattice). You will be able to observe that handoffs accumulate. A cell can carry a river without a single drop of rain having landed on it because of the supply from upstream.
Overflow on an \(L\times L\) Scheidegger basin at rainfall \(p\) and storage \(C\). Background shades the cumulative water \(w(y,x)\) arriving at each cell on a logarithmic scale, dark where the ground is dry and pale where many streams have merged. spanning river, a connected overflow path from top to bottom. Resample \(r\) draws a fresh rain field, wet with probability \(p\) at every cell, and resample \(D\) draws fresh Scheidegger flow directions. Both leave \((p, C)\) untouched, so what changes is the realization, not the parameters.