Ouroboros dice pools

Edited 10th April 2026: This is a cut-down version of the original post. The goal was to use a few simple, easy-to-remember rules to create a more complex behaviour from rolling easily-available dice. The original had more images and a little more text.


The basic idea: a cycle of dice pools #

Here's how it works: You have 3 dice pools—A, B, and C—and 10 6-sided dice. The three pools are in a loop, A leading to B, B to C, C back to A, and all the dice start in pool A.

Sometimes in the game, you pick a pool to roll, for whatever reason. For every die that shows 1–5, you “pull” 1d6 from the previous pool into the pool you rolled. For every die that shows 6, you “push” 1d6 from the pool you rolled into the next pool.

Here's that explanation in diagrams:

This mechanic sends the dice in a cycle. When rolling a small pool, you're far more likely to pull dice in than push them out. As the pool grows to include most or all of the dice, the balance shifts as there are few-to-no dice left to pull in. Once the next pool gains a few dice it starts to pull everything forward and the current pool shrinks to nothing.

I programmed a model to simulate this system to show how it works out in practice. The model uses the rules above, except it rolls pools at random (as long as the pool has dice). Here's what happened in 4 separate simulations of 100 rolls in a row:

The dice start bunched up in pool A, then filter through to pool B, then to pool C, then back to A again and so on. The pools tend to peak at 7–9 dice instead of going all the way to 10, and the peaks tend to be 4–10 rolls wide. Caveat: This is from a model that just picks pools at random rather than with any reason.

That's just one simulation, though. What happens on average? This:

This is the average of 1000 simulations. After about 20 rolls, everything levels out; on average, each of the 3 pools has 1/3 of the dice. Basically, the results show that this mechanic is reliable, but not predictable. You know the pools will peak in turns, but not when, how high, or how long.

Tweaking the rules #

This behaviour happens no matter how many pools there are or what size the dice are, as long as you have a high chance of pulling and a low chance of pushing. On the other hand, here's what happens if we pull on 1 or 2, do nothing on 3 or 4, and push on 5 or 6:

The difference is night and day. The peaks get broader, less reliable, less-defined, sometimes they're skipped entirely. The stats are less extreme, so the dice flow is less extreme.

What else could you try? #

The mechanic offers some pretty easy handles already. You might overlap the thresholds, e.g. on 5 you push and pull a die, or you could change the number of dice pushed or pulled, e.g. for every 6 you roll you push 2 dice, or add more pools.

Beyond those small tweaks, you could mix up the die sizes while keeping the same thresholds. For example, you could use a mix of d4s, d6s, and d10s. If you keep the push threshold at 6 then the d4s could only be pulled, not pushed, since they can never show a 6; meanwhile, the d10s have even chances of pushing and pulling. Varying the dice opens up more decisions, such as how to decide which dice to pull now that there are different kinds (is it free choice or do you follow a rule?).

We can go even further. Dice tricks, branching paths, special dice with special properties e.g. only being pushed or pulled if you roll doubles (per Ty/@eldritchmouse's suggestion).