Draw random numbers in any range, with or without repeats, right in your browser.
A random number generator answers the simplest fair question there is: pick one number, out of this range, with no favourites. This tool draws whole numbers between any minimum and maximum you type, one at a time or up to a thousand at once, and lets you decide whether the same number may come up twice. Turn repeats off and it becomes a raffle machine: draw 5 winning ticket numbers out of 2,000, or 15 bingo numbers out of 75, and no number can be drawn twice.
The randomness comes from crypto.getRandomValues, the browser cryptographic generator, and not from Math.random. It also uses rejection sampling, which matters more than it sounds. The naive way to squeeze a random 32-bit value into a range is to take the remainder of the division by the range size, but that quietly favours the first numbers: 2^32 is not a multiple of most ranges, so the leftover values pile up on the lowest results. The tool instead discards any value that falls in that uneven tail and draws again, so every number in the range has exactly the same probability. When repeats are off, it applies a partial Fisher-Yates shuffle over the range, which guarantees distinct results without ever drawing the same number twice.
Typical uses go far beyond raffles: picking which team presents first, choosing a random row of a spreadsheet for a spot check, generating test data with a known range, running a class dynamic, deciding a tiebreak nobody can dispute, or simulating dice and coins with arbitrary numbers of faces. Nothing you type is sent anywhere — the whole draw happens in JavaScript on your device, which also means the tool works offline once the page has loaded.
Uniform integer in [min, max]: draw a 32-bit value from crypto.getRandomValues, discard it if it falls above the largest multiple of the range size that fits in 2^32 (rejection sampling, which removes modulo bias), then take the remainder of the division by the range size and add the minimum. For draws without repeats, apply a partial Fisher-Yates shuffle over the range and take the first N positions.
Yes, as random as a browser can produce. The tool uses crypto.getRandomValues, the cryptographic generator, combined with rejection sampling so no number in the range is favoured over another.
Because it biases the draw. If the range does not divide the generator output evenly, the lowest numbers get a slightly higher chance. Rejection sampling throws away the uneven tail and draws again, which removes the bias completely.
Only if you leave "No repeated numbers" unticked. With the option on, every drawn number is distinct, which is what you want for raffles, bingo and picking winners.
Up to 1,000 per draw, and the range can span any whole numbers your browser handles. Without repeats you obviously cannot draw more numbers than the range holds.
No. The draw runs 100% in JavaScript on your device. No range, no result and no draw is transmitted, logged or stored anywhere.
Vai.la turns any URL into a short link with click statistics, QR Code and your own biolink.
Vai.la is not responsible for how the tools are used or for decisions made based on their results.