the method
Monte Carlo simulation for sport, from scratch
The idea behind every number on this site: when you cannot solve a problem with a formula, play it out thousands of times and count. Dice to football, in plain language, with the code.
21 July 2026 · 6 min read · James Frewin

There is a trick underneath every number on this site, and it is almost embarrassingly simple. When a problem is too tangled to solve with a neat formula, you stop trying to solve it. You act it out at random, thousands upon thousands of times, and you count. That is Monte Carlo simulation, and once it clicks you see it everywhere.
The idea, in one bet
Suppose you want the chance of rolling a total of 7 with two dice. You could reason it out (6 ways in 36, so about 16.7%). Now make it harder: two dice, but re-roll any 1, and if both land even you get a bonus roll. The tidy formula is suddenly a headache.
So do not derive it, run it. Roll the dice in code a hundred thousand times, following whatever rules you like, and count the fraction of runs that hit your target. That fraction is the probability, to as many decimal places as you have patience for. You have swapped a maths problem for a counting problem, and computers are very good at counting.
Why it settles: the law of large numbers
The reason this works has a name: the law of large numbers. Any single run tells you almost nothing, it either happened or it did not. But average enough independent runs and the result homes in on the true probability. Early on the estimate lurches around; as the runs pile up it settles.
The catch is in how fast it settles. The random wobble shrinks with the square root of the number of runs, so to make your answer ten times steadier you need a hundred times the runs. That is why the model runs 100,000 simulations for a published number and a few thousand live as you drag a slider: enough to be steady, not so many that your browser sweats.
From dice to a football match
A match is just a richer version of the same bet. Give each team a scoring rate, draw a scoreline at random from it, and you have played the game once. Do that 100,000 times and count: how often the home side wins, how often it finishes over 2.5 goals, how often it goes to extra time and then penalties.
This is where simulation earns its keep. The questions fans actually ask pile up fast, and they interact, extra time only matters if it was level, a shootout only if extra time settled nothing. Chase that with formulas and you drown. Simulate it and every question is answered from the same pile of runs, for free.
You are not predicting the match. You are playing it a hundred thousand times and reading off how the season would treat it.
The one rule: make it repeatable
There is a single discipline that separates an honest simulation from a party trick: the randomness has to be seeded. A seeded generator starts from a fixed value, so the same inputs always produce the same result, on your machine and on anyone else’s.
Without it, the numbers on the page would be a fresh coin flip on every load, impossible to check or reproduce. With it, a reference run is fixed: you can re-run it, audit it, disagree with the inputs but never with the arithmetic. The engine here seeds from the date, so each match’s headline run is pinned and repeatable.
That is the whole method: when the maths gets hard, stop being clever and start counting. It is how physicists size up reactors, how funds price options, and how a football match becomes a spread of honest probabilities instead of one pundit’s hunch. Simple, old, and quietly powerful.
More from the journal


