The 1–90 range
Ninety balls is the British and Italian version: tombola, housey-housey, the church-hall game with a caller and a book of six tickets.
The caller's board is laid out in nine columns of ten, which is exactly how the numbers split. Column one holds 1 to 9, column nine holds 80 to 90, and each ticket row takes at most one number per column.
Every number lands at 1.11 percent here. What the range does not reproduce is the cage: a real caller draws without replacement, so a called ball never comes back.
- 1 to 90, both included
- 90 whole numbers
- 1.11%, exactly 1 in 90
- 1 to 10 numbers per draw
- None inside a multi-number draw
- Every draw gets a link that replays it
What a 1–90 draw is for
- Calling a number in 90-ball bingo or tombola
- Drawing a raffle ticket from a book of ninety
- Picking one of ninety numbered lots at a fundraiser
- Choosing a number for a caller's nickname script
- Assigning ninety entries in a small prize draw
How the randomness works
Every tap calls crypto.getRandomValues, the browser's cryptographic generator, and asks it for one unsigned 32-bit value. That lands somewhere between 0 and 4,294,967,295, and it then has to be folded down to the 90 numbers in this range.
Folding it down with a plain remainder is where most generators go wrong, an error known as modulo bias. 90 does not divide 4,294,967,296 evenly: 76 values are left over at the top, and wrapping them around would make the first 76 numbers in the range fractionally likelier than the rest. This tool throws away any raw value at or above the last exact multiple of 90 and draws a fresh one instead. That is rejection sampling. It fires about 1 in 56,512,728 draws, and it is the difference between 1.11% exactly and 1.11% approximately.
Ask for more than one number and the tool keeps drawing until it holds that many distinct values, then sorts them ascending. Nothing is seeded, nothing is sent anywhere, and each draw is independent of the one before it. The roll history under the tool lives in your browser's local storage, where the clear button empties it. The daily lucky numbers elsewhere on this site work the opposite way on purpose: they use a seeded generator so the same date always returns the same set. How random is random sets the two side by side.
In a full 90-ball game the caller normally gets into the eighties before anyone completes a full house, which is why the last few calls drag and why the room goes quiet. That tension comes from drawing without replacement out of a shrinking cage, and it is not what happens here: every tap starts from the full ninety. Running a real game with this means keeping a list of what has gone and redrawing on a repeat.
- crypto.getRandomValues, the browser's cryptographic generator
- One unsigned 32-bit value, sometimes more
- Rejection sampling onto 90 slots
- 76 of 4,294,967,296 raw values, redrawn
- No. These tools are never seeded
- Your browser. No server ever sees a draw
1–90 — frequently asked
Ninety in the British and Italian game, seventy-five in the American one. The ticket layouts differ too: a UK ticket is three rows of nine columns with five numbers per row, a US card is a five-by-five grid.
For a small game, yes. Cross each number off a printed grid as it is drawn and skip repeats. Past forty or fifty calls the repeats start to outnumber the new numbers, so a physical cage or a dedicated caller app is less tedious.
It comes from tombola, the Italian Christmas game, where ninety numbered tokens were drawn from a bag. Ninety splits into nine columns of ten, which is what makes the caller's board and the ticket layout work.