The old joke that you wait ages for one bus, then three come along at once, is bordering on cliché. But it's also, as it turns out, true – not just because of bad planning, but also because of maths.

The phenomenon is so common, in fact, that it has a choice of names. Bus bunching, clumping, convoying, platooning – all relate to the depressing reality that, over any length of time, buses serving a single route are likely to end up tootling along directly behind each other.

The reasons why this should be can be difficult to get your head around – so Lewis Lehe, a postgrad working on a PhD in transport engineering at the University of California, Berkeley, has built a game of sorts to demonstrate. You can play it here. But if, like us, you are both lazy and impatient, here's how it works, with a few helpful screenshots to illustrate.

The game features two buses, serving a circular route with four stops. At the start of the game, the two buses are evenly spaced, at opposing ends of the loop. Passenger flows at each stop are identical to those opposite: when one bus has to pause for a set period at one stop, the other is pausing for the same length of time across the map.

The result is that the two buses are always carrying the same number of passengers. Left to their own devices, they will remain equally spaced forever, in perfect equilibrium.

And we know this, because at this point we got distracted, had a conversation on Twitter, went to make a coffee, and then suddenly remembered we were in the middle of doing something about buses, flicked back to the game in a panic, and discovered that it looked like this:

Our game was still ticking along nicely, the two buses now holding seven passengers apiece.

Eternal equilibrium is really boring, though, so let's mess things up a bit. What happens if we delay Bus One, just for a single second?

Err, well, this as it turns out. This is a couple of moments after the unexpected delay.

Two things to notice here. One is that the gap between the two buses has closed, slightly: that momentary delay allowed Bus Two to catch up, slightly. The other thing is that Bus One now has more passengers.

Those two things are actually features of a single phenomenon. In those few moments in which Bus One was delayed, Bus Two started to catch up – not by much, but for enough for it to have an effect. The consequence is that it's now reaching stops which last saw a bus relatively recently – and where there are fewer passengers for it to pick up.

But here's the insidious thing: that process is self-perpetuating.

Think this through for a moment. If Bus Two is serving stops that have relatively fewer passengers waiting, it can get moving again faster. Bus One, by contrast, is serving stops that haven't seen a bus in a while (it was delayed, after all), and so it's picking up more people. That means it needs to stop for longer, both to let its larger contingent of people off, and to collect the next lot.

And so, Bus Two gets closer...

...and then catches up altogether.

Look at the distribution of passengers now. Bus One is now arriving at stops with populations bigger than some small Chinese cities. Bus Two, just behind, arrives moment later to find them deserted. Without intervention, this situation will persist, essentially, forever.

In real life, of course, there would be an intervention (Bus Two would almost certainly overtake, as soon as there’s room). And real life is messier than this model in other ways, too. Bus routes are served by more than two buses; passenger flows aren't so evenly spread.

But it’s this inevitable messiness that provides that slight delay that kicks the whole process off. A slight disparity in passenger numbers, a traffic jam, bad luck with the lights; whatever the cause, one bus will be delayed, and those behind it will start to catch up.

Until suddenly you get three buses showing up at once and everyone makes tutting noises.

There are ways of mitigating this feedback loop. One is setting maximum or minimum stopping times in advance, to regulate the service. Another is building in waiting time at one end of a route, so that a bus doesn't immediately turn around and set off again (in effect, doing the second half of a circular route), thus bringing a measure of predictability to the time it takes to do an entire circuit.

These things can help – but the ubiquity of bus bunching suggests that they can’t elimate the problem altogether.

So the next time someone in your hearing asks why it is that buses all come along at once, you can reply, "Mathematical inevitability". Then you can look smug about it, as they, presumably, decide that they’d rather walk.