Generator

How many nodes reach each level, n = 20,000, p = 0.5

Rendered here at the parameters it defaults to, with every essay that calls it — which is the same list as the blast radius of changing it.
How many nodes reach each level, n = 20,000, p = 0.5The bars are the measured share of nodes whose height is exactly that level; the open markers are p^(l−1)(1−p), the share the geometric promotion rule predicts. The worst departure across the 8 levels drawn is 0.32 percentage points. The tallest node in this build reached level 20, which is above the axis: the distribution has a tail, and the height of a skip list is a random variable rather than a bound.share of nodespredictedlevel 149.68% · 50.00%level 225.29% · 25.00%level 312.52% · 12.50%level 46.24% · 6.25%level 53.08% · 3.13%level 61.64% · 1.56%level 70.79% · 0.78%level 80.34% · 0.39%20,000 nodes, p = 0.5, seed 5150worst departure 0.32 points

How many nodes reach each level, n = 20,000, p = 0.5

The bars are the measured share of nodes whose height is exactly that level; the open markers are p^(l−1)(1−p), the share the geometric promotion rule predicts. The worst departure across the 8 levels drawn is 0.32 percentage points. The tallest node in this build reached level 20, which is above the axis: the distribution has a tail, and the height of a skip list is a random variable rather than a bound.

Drawn at 690 × 352, wide on the page. Everything above is what level-distribution returns with no arguments; the caption is the generator's own, computed from the numbers in the drawing rather than written beside it.

2 essays call level-distribution. The drawing above is what it returns with no arguments at all; every call below passes it something, because a placement that passes nothing draws whichever member of the family the generator happens to default to rather than the one its essay argues about — which is what optcheck and figfill exist to catch.

Where it is called

Changing this generator changes every one of these figures.

The library, page 2 of 5 — where level-distribution sits