A defensible prize draw needs three things a fair one does not: the entry list fixed and recorded before the draw, the method stated in advance, and a result that can be reproduced or witnessed afterwards. The randomness is the part least likely to be questioned; the process around it is where every dispute actually starts.
Most of this costs nothing. It is a matter of doing the steps in an order that leaves evidence rather than in the order that feels natural.
What order should the steps go in?
Fix the list, publish the method, draw, record. Reversing any two of those is what creates the doubt.
- Close entries and freeze the list. Export it, number the rows, and note the count. The count is what you will draw against.
- State the method before drawing. How many winners, whether reserves are drawn, what happens if a winner does not respond.
- Draw once. Record the numbers drawn and the time. If you have to redraw, record why.
- Publish the winning entry numbers, not just the names, so entrants can check their own.
The single most common failure is drawing first and deciding the rules afterwards — usually when the winner turns out to be an employee, or to have entered twice, or to be uncontactable. Every one of those is easy to handle in advance and impossible to handle credibly after the fact.
Should you draw numbers or shuffle names?
Numbers, in almost every case, because a numbered list is auditable and a shuffled list is not. If entries are rows 1 to 4,312 in a spreadsheet, drawing the integers 1 to 4,312 lets anyone with the same spreadsheet verify which entry each number points to.
Turn on the no-repeats option when drawing multiple winners. Without it, independent draws can produce the same number twice — with 4,312 entries and five winners the chance of at least one collision is small but real, and dealing with it live is exactly the improvisation you were trying to avoid.
What does the seed do for you?
It converts the draw from something you did into something that can be repeated. Entering a seed makes the sequence deterministic: the same seed and the same range produce the same numbers, every time, for anyone.
That gives you a specific and useful protocol. Announce the seed in advance — a value nobody can influence, such as a stated future event or a published figure — then draw with it. Anyone can reproduce the result, and you could not have chosen it to favour a particular entry, because the seed was fixed before you knew the mapping.
Leaving the seed empty is the right default when nobody needs to reproduce the draw. It uses fresh randomness from the browser crypto source and nothing about the sequence is recoverable afterwards.
Why does the generator reject and redraw?
To avoid a bias most implementations have. The naive way to get a number in a range is to take a random value and apply a modulus, but unless the range divides evenly into the generator’s output space, the low end of the range comes up slightly more often than the high end.
The fix is rejection sampling: discard the small slice of values that would cause the imbalance and draw again. It costs a negligible amount of time and makes a range of 1 to 4,312 exactly uniform rather than nearly uniform. The difference is invisible in ten draws and measurable in ten thousand — which is to say, invisible in your draw and present in the argument about it.
What about the legal side?
It varies by jurisdiction and it is worth checking before rather than after. The distinction that matters in most places is between a lottery, which requires payment to enter and is heavily regulated, and a free prize draw or a skill competition, which usually are not.
What is commonly expected regardless: published terms with an opening and closing date, a stated prize, the identity of the promoter, how winners will be notified, and a route for entrants to find out who won. None of that is onerous, and all of it is much easier to write before the draw.
Questions people ask
How large a range can it handle? Far larger than any entry list. The constraint in practice is your spreadsheet, not the generator.
Can I weight an entry? Not directly, and the usual workaround is to give a weighted entrant multiple rows. That keeps the draw uniform over rows while making the odds unequal over people, which is transparent and easy to explain.
Does the history prove anything? It records what came up in this browser session, which is useful as a working note and is not an independent audit. For anything of value, a witness or a pre-announced seed carries far more weight.
What if a winner does not respond? Decide in advance: a stated deadline and a drawn reserve list handles it without a second draw. Reserves should be drawn at the same time as the winners, not later.
Fix the list, publish the method, and make the result reproducible. The random number generator does uniform draws with no repeats and an optional seed, the random person picker works straight from a pasted list of names, and spin the wheel is the version for drawing in front of an audience.