Random Winner Picker
Cryptographically secure random name picker for giveaways, raffles, and contests. Features unbiased selection algorithms and duplicate filtering.
Contestants
Settings
Result
About
Running a professional giveaway or internal raffle carries a hidden risk: algorithmic bias. Standard selection tools often rely on basic pseudorandom number generators (PRNGs) like Math.random(), which are not cryptographically secure and can exhibit distributional clustering. This exposes organizers to accusations of unfairness or predictability.
This tool eliminates that risk by utilizing the browser's native Web Crypto API (crypto.getRandomValues) combined with a strict Fisher-Yates shuffle algorithm. By ensuring cryptographic entropy, every entry has an exactly equal mathematical probability of selection. Designed for high-stakes social media giveaways, classroom management, and enterprise raffles, it effortlessly handles deduplication, sanitization, and multi-winner selections in a completely client-side environment.
Formulas
To ensure perfect fairness, this tool utilizes the Fisher-Yates (Knuth) Shuffle. The algorithm iterates through the list of entries from the last index down to the first, swapping the current element with a randomly selected element that comes before it (or itself).
Let A be an array of n entries.
For i from n − 1 down to 1:
Choose an integer j such that 0 ≤ j ≤ i
Swap A[i] and A[j]
To determine j, we extract entropy using a CSPRNG, ensuring that the selection of j is uniformly distributed across the remaining un-shuffled elements.
Reference Data
| Selection Method | Entropy Source | Algorithmic Bias | Suitability |
|---|---|---|---|
| Physical Draw (Hat) | Atmospheric / Mechanical | High (Inadequate mixing) | Casual / Low-stakes |
| Basic PRNG (Math.random) | Browser Engine (V8/SpiderMonkey) | Medium (Predictable state) | Testing / Games |
| CSPRNG (This Tool) | OS-level hardware interrupts | Zero (Cryptographically secure) | High-stakes / Professional |
| Third-Party APIs | Server-side PRNG | Unknown (Black box) | Requires trust in vendor |