How RNG Really Works in Games (and How to Tame It)
Players say "the RNG hates me" the way sailors talk about the sea — as if it had a grudge. It doesn't. Random number generation in games is a tidy, predictable machine, and once you know how it thinks, you can shape it so it feels fair instead of cruel. Let's draw it out.
Computers don't do random
A processor is a rule-follower; it can't actually be spontaneous. What games use is a pseudo-random number generator: an algorithm that starts from a number called a seed and churns out a stream that looks random but is fully determined by that seed. Feed it the same seed and you get the exact same sequence every time — which is exactly why speedrunners and testers love fixed seeds.
From that stream the generator produces a value between zero and one, evenly spread. Everything else — a coin flip, a loot roll, a critical hit — is just a way of slicing that even spread into buckets.
Turning a number into an outcome
Imagine a line from zero to one. To give an epic drop a 2% chance, you set aside the last two hundredths of the line for it. Draw a number; if it falls in that sliver, epic. If a rare gets 8%, it takes the next slice, and common fills the rest. The draw is even, but you've decided how wide each door is. That's the whole trick behind a drop table.
This is also why designers write drop rates as probabilities that sum to one: you're literally cutting up a line of length one.
Why streaks are not bugs
Each draw is independent — the generator has no memory of the last one. So a run of five misses in a row isn't the system "holding out." With a 2% epic, the chance of missing five times running is about 90%, and missing twenty times is still better than a coin flip. Streaks are not the exception; over enough pulls they are guaranteed to appear. The player who "should have gotten it by now" is reasoning about a memory the machine doesn't have.
Understanding this protects you from a classic mistake: patching a "broken" drop rate that was working exactly as designed, because a loud minority hit an unlucky streak.
Taming it: three gentle levers
- Pity counters. Track misses and quietly raise the chance as the count climbs, or guarantee a drop after a set number of tries. This keeps the surprise while capping the worst-case pain.
- Bad-luck smoothing. Instead of a flat rate, start the chance low and nudge it up each miss, resetting on a hit. Players still feel randomness, but ugly droughts get rarer.
- Bounded draws. Shuffle a "bag" of outcomes and draw without replacement, so results are random within a window but can't clump for too long — the technique behind many card and tile systems.
Test it like an engineer
Because a seed reproduces a sequence, you can replay a bad run exactly and see what happened. And because you know the true probabilities, you can simulate a million pulls in a script and check that the observed rates match your intended ones. If they don't, the bug is real; if they do, the RNG is fine and the complaint is about feel — which is a design problem, and a solvable one.
The takeaway
RNG isn't a mood. It's an even spread from zero to one, sliced into the outcomes you chose, drawn without memory. Respect the independence, shape the extremes with pity and smoothing, and your randomness will feel generous rather than spiteful.
Formux Lab · Gedimino pr. 9, 01105 Vilnius, Lithuania · [email protected]