"Random" means different things depending on what's at stake — picking who presents first in class and generating a number for a security key both need randomness, but not the same quality of it.

Two Different Kinds of "Random"

Math.random() vs the Web Crypto API: JavaScript's basic random function is fast and fine for games and everyday decisions, but it's not cryptographically secure — its output can theoretically be predicted under certain conditions. The Web Crypto API generates true, cryptographically random numbers suitable for security-sensitive uses.

When Basic Randomness Is Enough

  • Classroom name picking or assigning presentation order
  • Deciding who goes first in a game
  • Casual office giveaways and team activities

When True Randomness Matters

  • Generating a security-sensitive value like a password or token
  • Anything where predictability would be a real security risk

Fair Selection From a List Is a Different Problem

Picking a winner from a list of entries isn't just about number randomness — it's about making sure every entry has an equal chance and none are accidentally duplicated or skipped. A dedicated random picker tracks the full list and removes picked entries when selecting multiple winners, which a bare random number generator doesn't handle.

For Official Contests, Check Local Rules

Casual giveaways are well served by JavaScript's random selection. A legally regulated sweepstakes with significant prizes may have specific jurisdictional requirements for how winners are selected and documented — worth checking before relying on any casual tool for something with real legal or financial stakes.

Step-by-Step: Generate Numbers or Pick a Winner

  1. Numbers/dice: set your range or dice count and generate
  2. Picking from a list: enter all entries, then pick one or more winners

Random Number Generator

True randomness via the Web Crypto API

Open Random Number Generator →

Random Picker

Fair selection from any list

Open Random Picker →