Random Name Pickers: Fair Selection for Giveaways and Raffles
Running a fair giveaway sounds simple until someone asks "how do I know the winner wasn't picked in advance?" — a reasonable question that deserves a concrete answer, not just trust.
What makes a selection genuinely fair
A fair random picker gives every entry an exactly equal probability of being selected, with no entry weighted more heavily than another unless that's explicitly intended (like extra entries for referrals). The randomness itself should come from a proper random number source, not a predictable or manipulable pattern.
Common ways fairness quietly breaks
- Duplicate entries counted as one. If someone enters multiple times but the list only counts unique names, their extra chances are silently discarded — worth deciding deliberately, not by accident.
- Manual "random" selection. Humans are demonstrably bad at picking things randomly — people tend to avoid picking the first or last item in a list, subtly and unconsciously biasing manual selection.
- Re-rolling until a "better" result appears. Running a random picker repeatedly until a preferred name comes up defeats the purpose of randomness entirely, even if each individual roll was fair.
Building trust into the process
For giveaways where trust matters — an audience that can't personally observe the selection — recording the process (screen recording the draw, publishing the full entry list beforehand) demonstrates fairness rather than just asserting it. A tool that runs entirely in the browser and can be demonstrated live removes ambiguity about whether the result was predetermined.
Frequently asked questions
For non-security purposes like a giveaway, standard random number generation (like JavaScript's Math.random()) is more than sufficiently unpredictable and unbiased — cryptographic-strength randomness isn't necessary for this use case.
Decide upfront whether duplicates represent legitimate extra entries (like referral bonuses) or accidental submissions, and either intentionally keep or remove them before running the draw — not after seeing the result.