LuckPicker

Category

Random Number & Data Generators

Random numbers, PINs, passwords, decimals, dates, lottery sets, bingo calls, and seeds.

This category covers every tool where the output is fundamentally a number -- or something built directly from digits, like a PIN, or from a calendar/clock position, like a date or time. Twelve tools live here, and while they look different on the surface, most of them share the exact same core fairness fix: rejection sampling, used to correct for the fact that most useful ranges (1 to 100, 4-digit PINs, a February-to-April date span) don't divide evenly into the 256 possible values of a single random byte.

That shared foundation is worth understanding once, because it explains why every tool here reaches for crypto.getRandomValues instead of the far more common Math.random() -- and why 'just take a random byte and use modulo' quietly produces biased results that get worse the further your range is from a power of two.

One tool here is a deliberate exception to that pattern and is worth flagging before you read the rest: the random decimal generator works with continuous values rather than whole numbers, which means rounding rather than rejection sampling is where its fairness question lives. Everything else in this category works with whole numbers, whole digits, whole days, or whole minutes.

Pure number generation

The random number generator is the broadest tool in this category — any minimum, any maximum, one value or a whole batch, all drawn with the same rejection-sampling fairness guarantee as everything else here. Batch requests get an extra safeguard worth calling out: rather than generating candidates and throwing away any that happen to repeat, which would slow down and get messier as fewer unused numbers remain, it pulls each value directly out of a shrinking pool of what's left, so there's no repeat to filter out in the first place because there was never a chance for one to occur.

The number wheel takes that same fair-range idea and adds the spinner wheel's arc-proportion visual mechanic on top, auto-populating a spinning wheel with your chosen number range instead of custom text. Its real practical addition over the plain number generator is an optional 'remove after call' mode built for bingo-style live number calling, where numbers already called shouldn't come up again.

Security codes: passwords and PINs

The random password generator builds a password character by character from whichever character types you enable -- uppercase, lowercase, digits, symbols -- each drawn independently from that pool via rejection sampling. The real security metric here is entropy: with a roughly 94-character pool (all types on), each character contributes about 6.5 bits, so a 16-character password lands around 104 bits of entropy, far beyond what any realistic brute-force attempt could crack.

The random PIN generator is the digits-only sibling: each digit is drawn from just 10 possible values (0 through 9), contributing only about 3.32 bits of entropy each -- meaningfully weaker per character than a mixed password, which is exactly why a 4-digit PIN (about 13 bits total) is so much weaker than even a short mixed password, and why 6- or 8-digit PINs exist for anywhere that needs stronger numeric-only security.

Calendar and clock: dates and times

The random date generator and random time generator both solve the same category of problem -- picking a fair point within a calendar or clock range -- using the same underlying trick: convert the range into a flat integer (days since a reference point, or minutes/seconds since midnight), draw a fair integer within that flat range via rejection sampling, then convert back into a readable date or time.

That flat-integer conversion matters because randomizing a date's month and day separately (or a time's hour and minute separately) would introduce bias -- not every month has the same number of days, so picking month and day independently would under-represent dates like the 31st and over-represent February relative to its real share of the year. Working in day-count or minute-count space avoids that specific problem entirely, giving every real calendar day (leap days included) or every real minute in the window a genuinely equal chance.

Choosing between the six number tools

Reach for the random number generator whenever the range itself is the point -- a raffle needs a ticket number, a stats lesson needs a live demonstration, a board game is missing whatever oddly-sized die a rule calls for. It's also the pick when you need several different numbers at once rather than just one. Want that same fair range wrapped in a visual spin and an auto-removal mode built for calling numbers out loud (bingo night, a live raffle draw)? The number wheel layers that presentation on top without changing the underlying fairness at all.

For anything that needs to double as a real credential, the choice comes down to what the destination accepts: a mixed-character password if letters and symbols are allowed (it's meaningfully stronger per character), or a numeric-only PIN if the destination specifically restricts to digits. For calendar or clock values, the date and time generators are purpose-built and shouldn't be replicated with the plain number generator, since naively randomizing month-and-day or hour-and-minute separately introduces the exact bias those two tools are built to avoid.

Why crypto.getRandomValues instead of Math.random()

JavaScript's built-in Math.random() is a pseudo-random number generator -- fast, deterministic under the hood, and never designed with unpredictability as a goal. Its output can, in principle, be predicted or reverse-engineered from enough prior outputs, because it's built from a mathematical formula optimized for speed and statistical distribution, not for resisting prediction. That's a fine tradeoff for a lot of casual uses, but it's the wrong tool anywhere fairness or security actually matters -- a password generator built on Math.random() would be genuinely weaker than one built on a cryptographic source.

crypto.getRandomValues instead pulls from the operating system's own cryptographic random generator, the same kind of source behind encryption-key generation, purpose-built so that watching past results tells you nothing about what's coming next. That's why every tool in this category, and everywhere else on the site, is built on it rather than on Math.random() -- a tool that claims to be fair while quietly running on a source that was never designed to resist prediction isn't really keeping that promise.

A note on precision and rounding

No tool in this category silently rounds or truncates a result in a way that would skew fairness -- the number generator and number wheel return exact whole numbers within your set range, the password and PIN generators return exact character-by-character draws with no rounding concept to apply, and the date and time generators resolve to whichever precision you choose (a full calendar day, or a minute versus a second) without ever collapsing multiple possible results into one displayed value. The decimal generator does round, by necessity, and states on its own page exactly what that costs the two endpoints of your range. That matters because rounding is itself a form of weighting -- if a tool quietly grouped several distinct underlying outcomes into one displayed result, some displayed results would end up more likely than others even if the underlying draw was fair.

Continuous values, and what rounding costs

The decimal generator is the exception to this category's whole-numbers pattern, and its fairness question is a different one. The draw itself is continuous and uniform across your interval; what introduces a wrinkle is rounding the result to a fixed number of places for display.

Rounding buckets a continuous distribution, and the two endpoints get half-width buckets because there is nothing beyond the interval to round inwards from. Asking for two decimal places between zero and one gives 101 possible outputs, of which 99 have probability 0.01 and the two endpoints have about 0.005 — so 0.00 and 1.00 come up about half as often as any interior value.

That is a genuinely different problem from the modulo bias the rest of this category corrects. Modulo bias comes from mapping 256 byte values onto a range that does not divide evenly, and rejection sampling eliminates it entirely. Endpoint deficit is inherent in rounding a continuous quantity into buckets, and the honest response is to state it rather than to claim it away.

Where every displayed value must be exactly equally likely, the answer is to draw integers with the number generator and place the decimal point yourself. An integer draw from zero to a hundred divided by a hundred gives 101 genuinely equiprobable values, because the draw was discrete from the start.

Drawing without replacement: bingo and lottery sets

Both tools remove drawn values from the pool, which makes a repeat structurally impossible rather than prevented by a check performed afterwards. That is a stronger guarantee, because there is no check to get wrong — the number is simply no longer in the bag.

The visible consequence is that the odds rise as the draw proceeds. The first bingo call of a seventy-five ball game is one in seventy-five and the sixtieth is one in sixteen, which is why the tail of a long game speeds up noticeably even though nothing about the tool has changed.

The bingo caller's real contribution is not the draw at all. Nobody has ever seriously disputed whether a bingo number was random; every dispute is about whether a number was called, which makes a permanently visible called-board worth more than any property of the randomness. The card checker resolves a claim in seconds by comparing pasted numbers against the called set.

The lottery generator computes the exact combination count alongside every line, and that number is more informative than the line. Six from forty-nine is 13,983,816 combinations, every one exactly as likely as every other — which is precisely why no generator can improve anyone's chance of winning anything, and the page says so with a visible disclaimer rather than in small print.

Splits, seeds and walks

The percentage allocator splits a whole into parts that sum exactly to the total, and it does so by dropping cut points into an interval and taking the gaps. The obvious alternative — draw a number for each part and normalise — is not uniform: sums of independent draws concentrate, so every share gets pulled toward one over n and a genuinely lopsided split becomes nearly impossible. Sorted cut points have no such pull, which is why a four-way split here will regularly produce a 3 next to a 60.

The seed generator is the only tool on this site that does not use crypto.getRandomValues, and that is deliberate rather than an oversight. It hashes a readable seed phrase into a 32-bit integer and runs a pseudo-random generator from it, so the same seed produces the same result on any device at any time. Reproducibility and unpredictability are mutually exclusive, and a draw somebody has to be able to check afterwards needs the first one.

That makes it the right tool for a published giveaway and completely wrong for anything that must be unknowable in advance — anyone holding the seed knows every value it will produce. The stronger protocol, publishing a hash of the seed before the draw and the seed itself afterwards, additionally proves the seed was not chosen after seeing who entered.

The random walk generator produces a picture rather than a number. Two hundred fair steps typically finish about fourteen away from the origin, because typical distance grows as the square root of the step count while the expected position stays exactly zero — and the drawn path spends long stretches entirely on one side of the line. That visual is the most persuasive available answer to somebody convinced a picker is rigged.

Frequently asked questions

How much slower does rejection sampling make these tools compared to a plain modulo shortcut?

Not noticeably -- the occasional extra draw needed to skip an uneven leftover byte value happens in a fraction of a millisecond, so every tool in this category still feels instant even though it's doing the extra fairness check the shortcut skips.

Which tool should I use for a raffle ticket number versus a lottery-style pick?

The random number generator handles both -- set your range to match the ticket or lottery format you need, in single or unique-batch mode.

Is a PIN ever as strong as a password of the same length?

No -- because a PIN's digit-only pool is much smaller than a full password's mixed character pool, each digit carries less entropy, so a PIN needs more characters to reach comparable strength.

Can the date and time generators be combined into one full random timestamp?

They're separate tools that don't chain automatically, but you can run each independently and combine the results yourself for a full date-and-time value.

Is there a real-world difference I'd ever notice between Math.random() and crypto.getRandomValues in casual use?

For a single quick decision, probably not visibly -- the difference matters most for security-sensitive uses (passwords, PINs) and for anything run at scale (like a large raffle draw), where the theoretical predictability of Math.random() becomes a real, exploitable weakness rather than an abstract one.

Can I generate a random number that's guaranteed to be prime, or otherwise mathematically constrained?

No -- the random number generator produces a uniform draw across your range with no further filtering; constrained generation like primes-only isn't built in.

Does the PIN generator ever produce a PIN starting with 0, like 0472?

Yes -- every digit position, including the first, is an independent equal draw across 0 through 9, so a leading zero is exactly as likely as any other digit.

Is there a difference in how 'unique' mode works between the number generator and the date generator?

Not directly comparable -- the number generator's unique mode draws several distinct numbers from one range in a single session, while the date generator produces one date per draw; generating several unique dates would mean running it multiple times and tracking duplicates yourself.

Which tools in this category are used for something security-related?

The password and PIN generators, and to an extent the seed generator when it is used to publish a verifiable draw. Everything else here is built for games, raffles, and scheduling rather than credentials.

Do any of these tools store a history of what they've generated?

No -- none of the six retain a history between draws or sessions; every result exists only until you record it yourself or generate the next one.

Which tool here does not use whole numbers?

The decimal generator. Its fairness question is about rounding rather than modulo bias, and the two endpoints of your range come up about half as often as interior values.

Can the bingo caller or lottery generator repeat a number?

No. Drawn values are removed from the pool, so a repeat is structurally impossible rather than prevented by a check.

Does the lottery generator improve my odds?

No, and nothing can. Every combination has identical odds, so no set of numbers this or any tool produces is better than any other. It is entertainment only.

Why does the seed generator use a different random source?

Because its purpose is reproducibility, which requires determinism. Every other tool here would be broken by being predictable.

Why not split a total by normalising random draws?

Because sums of independent draws concentrate, pulling every share toward the average. Sorted cut points give a genuinely uniform split.