Why “random” is harder than it looks
Most quick random-number code uses Math.random() and a modulo, which has two problems. Math.random() is
a predictable pseudo-random generator, and taking a remainder makes some numbers slightly more likely than others whenever the
range doesn’t divide evenly. For a dice roll nobody notices; for a prize draw it isn’t fair.
The generators here use crypto.getRandomValues(), the browser’s cryptographically secure random source, and
rejection sampling: any draw that would fall in the uneven tail is thrown away and redrawn. Every value in your
range has exactly the same chance.
Typical uses
- Draws and giveaways: pick winning ticket numbers without repeats.
- Games and classrooms: dice, bingo numbers, random groups and questions.
- Sampling: choose random rows or IDs to audit or survey.
- Development: seed test databases, fuzz inputs and fill forms with plausible values.
All 1 tools in this category
- Random Number Generator: Generate truly unbiased random numbers in any range, one or thousands, with or without repeats, sorted, or with decimals.
Other categories
- Data & Format: JSON, XML, YAML, CSV, SQL, HTML and Markdown, format, view, convert and diff.
- Encoding & Crypto: Base64, URL, JWT, hashes, UUID, binary, QR codes and passwords.
- Dev Productivity: Regex, cron, timestamps, word counter, case converter, lorem ipsum, subnets and more.
- Frontend & Design: CSS generators, image compression, SVG to PNG, favicons and px to rem.
- Text Tools: Morse code, small text, fancy fonts and everyday text clean-up.
- Calculators: Percentages, dates, Roman numerals and quick math.