Queueing theory · a true thing you can operate
The Other Line
You change lanes and the one you left surges ahead. You are sure you have a gift for picking the slow line. You don't. You're just outnumbered — and that part is arithmetic, not luck.
Here are three things queueing theory knows about waiting that feel like superstition until you watch them happen. Each is a switch or a slider you can pull. None of the numbers below are typed in — they are computed in front of you, and an offline verifier reproduces every one (research/queuing-theory/verify.mjs, 18/18 green).
1 · You're outnumbered, not unlucky
Pick a checkout line. The others are no different from yours — same kind of customers, same kind of register. So your line is the first to clear with probability exactly 1/c, where c is the number of lines. Which means some other line beats you 1 − 1/c of the time. Race them and watch the fraction settle.
With five lines, the other lines win 80% of the time — four trips out of five, the lane you didn't pick really did move faster. The remarkable part: this needs nothing about how service times are distributed. Fast registers, slow registers, wildly erratic ones — as long as the lines are alike and you can't see the future, your line's finishing rank is uniform, and the answer is exactly 1 − 1/c. The verifier confirms it for both random (exponential) and perfectly even service.
2 · One snaking line beats many
So if the other line always seems faster — why not abolish the choice? Send everyone through a single winding queue that feeds all the registers, the way banks and airports do. Same customers, same registers, same load. Run both at once and compare the waits.
The honest result — and it's subtler than the folklore. If you could read every line perfectly and always join the truly shortest, the average waits come out nearly equal. But you can't read them — and realistic blind choosing waits several times longer than the shared line. And even perfect choosing loses on the thing you actually feel: a single first-come-first-served line guarantees nobody who arrived after you leaves before you. Parallel lines can't promise that. The shared queue removes both the bad luck and the injustice — that's why the snaking line won, not a big gap in the average.
3 · The wall at the end of capacity
Here is the one that runs the world. As a line gets busier, the wait doesn't climb steadily — it climbs as 1/(1−ρ), where ρ is how full the register is kept. Near 100% it goes vertical. Drag the load and watch where the wait goes.
| busy | 50% | 80% | 90% | 95% | 98% |
|---|---|---|---|---|---|
| wait, in service-times | 1.0 | 4.0 | 9.0 | 19.0 | 49.0 |
This is why the staffed line at 98% capacity is not "a bit slower" than 90% — it is roughly five times worse. Closing the last tenth of a register's idle time (90% → 99% busy) multiplies your wait by about eleven. Slack you'd call wasteful is the only thing keeping the queue from exploding. It's the same wall behind a jammed motorway, an overloaded server, an emergency room at capacity, a too-efficient call centre.
The check
Every claim here is a standard result of queueing theory, re-derived numerically in front of you and reproduced offline by an independent seeded simulation — research/queuing-theory/verify.mjs, 18 / 18 green:
- 1 − 1/c: simulated "the other line was faster" fraction lands within 2% of 1 − 1/c for c = 2, 3, 5 — for both random and perfectly even service. The feeling is the literal base rate.
- Pooling: Erlang-C mean wait matches the pooled simulation within 5%; blind random-join waits 3.5–5.7× longer than one shared line; even perfect "join shortest" stays more variable.
- The wall: M/M/1 wait = ρ/(μ−λ) matches the sim to under 1%; raising the load from 90% to 99% busy multiplies the wait by exactly 11×.
- The assumption, named: by Pollaczek–Khinchine the wait scales with (1+C²)/2 in the service-time variability. Even, deterministic service (M/D/1) waits exactly half of the erratic exponential case — confirmed to 5%. Real checkouts are steadier than exponential, so a real line waits less than the model says; the shapes of all three results survive, the exact minutes don't.