Free random number generator: set a range, generate many at once, no-repeat draws, decimals, negatives, Gaussian, plus binary, octal, and hex output.
Type a minimum, type a maximum, press Generate. That is the whole tool for most people, and it works the moment the page loads — there is no sign-up, no email box and nothing to install. Underneath that one-line use, though, this generator does several things the usual "pick a number" box does not: it can produce thousands of numbers in one press, it can guarantee no number repeats, it can output decimals to a chosen precision, it can print in binary, octal or hexadecimal, and it can bunch results around the middle of your range instead of spreading them evenly.
Everything runs in your browser. The numbers are produced by JavaScript on your own machine, nothing you type is sent anywhere, and no result is stored on a server. If you close the tab the numbers are gone, so copy anything you need to keep — the Copy button puts the whole result set on your clipboard as a comma-separated list, ready to paste into a spreadsheet, a chat message or a document.
The pill switch at the top of the tool chooses between three modes. They are genuinely different generators, not cosmetic variations.
| Mode | What it produces | Use it for |
|---|---|---|
| Integers | Whole numbers in an inclusive range, with optional uniqueness, bell-curve shaping and base 2/8/16 output | Raffles, drawing names by number, picking a winner, test data, lottery-style draws |
| Decimals | Floating-point values between your two bounds, rounded to 0–10 decimal places | Simulated measurements, prices, sensor-style sample data, statistics homework |
| Dice (NdM) | Dice-notation rolls such as 2d6 or 3d6+2, showing the total and the contributing dice | A quick roll when you are already here; for a full dice interface use the dedicated dice roller |
Integer mode takes a Minimum and a Maximum and treats both as included. A range of 1 to 100 can return 1 and can return 100. Negative bounds are fine: −50 to 50 is a valid range, and so is −100 to −1. If you enter the bounds the wrong way round the tool sorts them for you rather than complaining.
The How many box controls how many numbers come back in a single press, from 1 up to 10,000. One number is displayed large and on its own; more than one comes back as a wrapped grid of tiles so you can scan a long draw quickly. A few worked examples:
This is the single most misunderstood option on any random number generator, and it changes the answer, not just the presentation.
Leave No repeats unticked and every number is drawn independently. That is drawing with replacement — as if you wrote each number on a ball, drew one, and put it back before drawing again. Duplicates are not a bug; they are expected. Asking for ten numbers between 1 and 10 will almost never give you all ten distinct values.
Tick No repeats and the tool draws without replacement: each value can appear at most once in that batch. This is what you want for raffles, seat allocation, name-by-number draws and anything modelled on physically removing a ticket from a drum. It is implemented as a shuffle of the whole candidate range, so every possible combination is equally likely rather than being biased by a draw-and-retry loop.
Two limits follow from how it works. You cannot ask for more unique numbers than the range contains — ask for 20 unique values from 1 to 10 and the tool tells you so instead of silently repeating. And uniqueness only applies within a single press. Press Generate twice and the two batches know nothing about each other, so a number from the first batch can reappear in the second. If you need a running no-repeat draw across several presses, ask for the whole set at once and work down the list.
By default this generator is uniform: every value in the range is equally likely. That is what most people actually mean by "random", but it is a specific choice, not a synonym. Real-world quantities are usually not uniform — heights, exam marks, delivery times and manufacturing tolerances all cluster around a middle value and thin out toward the extremes.
Ticking Gaussian / normal distribution switches to a bell-curve shape centred on the midpoint of your range. Values near the middle come up often, values near the ends come up rarely, and the spread is scaled so that the range roughly spans the bulk of the curve. Results are clamped so nothing ever falls outside your minimum and maximum, which means the two endpoint values absorb the small amount of the curve that would otherwise have fallen beyond them — worth knowing if you are counting exact endpoint frequencies for an assignment.
Gaussian and No repeats are mutually exclusive, and the tool greys out whichever one you did not pick. That is deliberate: forcing uniqueness onto a bell curve would flatten the very distribution you asked for. Pick the shape you want, or pick uniqueness, not both.
Decimal mode returns floating-point values between your bounds, rounded to the number of decimal places you set (0 to 10). Ask for values between 0 and 1 to two places and you get things like 0.42 and 0.07; ask for 9.5 to 10.5 at three places and you get plausible-looking measurement data. The How many box works the same way here, so a thousand simulated readings is one press away. Note that rounding happens after generation, so at zero decimal places you will see whole numbers — but integer mode is the better tool if whole numbers are what you actually want, because only integer mode offers uniqueness, bell-curve shaping and alternate bases.
In integer mode the Output base dropdown converts each generated value before it is displayed. Base 10 is the default; base 2, 8 and 16 give binary, octal and uppercase hexadecimal. The numbers themselves are drawn from your decimal range and then written in the chosen base, so a range of 0–255 in hex produces values from 0 to FF. Negative values keep a leading minus sign rather than being shown in two's complement.
This is for generating a random value and seeing it in another base. If you already have a specific number and want it converted, that is a different job — the tool links out to a number base converter for exactly that case.
Here is the honest answer, because most sites dodge it. This generator uses the browser's built-in Math.random(). That is a pseudorandom number generator: a deterministic algorithm, seeded by the browser at start-up, that produces a sequence with no pattern any human will ever notice. It is uniform, it is well distributed, and for a raffle, a classroom draw, a game, a seating plan or a statistics exercise it is entirely fine.
What it is not is cryptographically secure. Browsers also expose crypto.getRandomValues(), which draws from the operating system's entropy pool and is designed so that observing past output tells an attacker nothing about future output. Math.random() makes no such guarantee — the sequence comes from internal state that, in principle, can be reasoned about from enough observed values. This tool does not use it.
The practical rule: if someone could gain by predicting the next number, do not use this tool. Do not generate passwords, API keys, session tokens, encryption keys, lottery entries you are betting real money on, or anything with a legal or financial audit requirement. For those, use a purpose-built cryptographic generator or a regulated draw process. For everything on a whiteboard, a games table or a homework sheet, Math.random() is the right amount of random.
One more honest note: because generation happens locally, results are not logged and cannot be reproduced or audited afterwards. That is a privacy advantage and a fairness disadvantage at the same time. If a draw needs to be provably fair to a sceptical participant, run it on a shared screen while they watch, or screenshot the result.
People report bias to random number generators constantly, and it is almost never there. Random sequences do not look tidy. Ask for twenty numbers between 1 and 10 and you will very often see a value appear three or four times while another never shows up at all. Ask for six numbers and getting three of them in the twenties is unremarkable. Genuinely uniform output produces clusters, gaps and runs, and a sequence that avoided them would be the suspicious one.
The pattern to remember is that evenness emerges slowly and only in aggregate. Over ten draws the counts will look lumpy; over ten thousand they will flatten out. If you want to see that happen rather than take it on faith, generate a few thousand numbers over a small range and count them in a spreadsheet — the proportions converge, while the raw counts keep drifting apart in absolute terms. Both of those things are true at once, and that surprises most people.
If you only ever need one number from one to a hundred, the preset random number between 1 and 100 page opens with that range already filled in. For a proper dice interface with quick d4–d100 buttons, a modifier field and a roll history, use the dice roller rather than this tool's dice tab. For a straight two-way decision, the coin flip is faster than setting a 1–2 range.
They are high-quality pseudo-random numbers generated in your browser, which are statistically fair for games, raffles, sampling, and simulations. They are not cryptographically secure true-random numbers, so do not use them to generate passwords, keys, or security tokens — use a dedicated cryptographic generator for that.
Switch to the Integers mode, set your range and how many numbers you want, then enable the "No repeats (unique)" option. The tool draws without replacement, so every number in the result is distinct — exactly what you need for lottery numbers or raffle draws. The count must be no larger than the range size.
Yes. In Integers mode, change the "Output base" selector to Binary (2), Octal (8), or Hex (16) and each generated integer is shown in that base. This is useful for developers, computer-science coursework, or generating sample values for color codes and memory addresses.
By default every value in your range is equally likely (a uniform distribution). The Gaussian option instead clusters results near the middle of the range and makes the extremes rarer, following a bell curve. It is handy for generating realistic-looking sample data or demonstrating the normal distribution.
NdM means "roll N dice that each have M sides." For example 2d6 rolls two six-sided dice, 1d20 rolls a single twenty-sided die, and 3d6+2 rolls three six-sided dice and adds 2 to the total. Type the notation into the Dice mode and the tool shows the individual rolls and the sum.