Set the head count per tier and draw them all at once
Enter the entrant roster with a head count for each tier and the page draws that many names per tier and lays them out in a table. The point of this page is an event where the tiers differ in size, such as one winner at the top, three in the middle and five below. With repeat wins blocked the roster is shuffled with the reverse Fisher-Yates method and winners are taken in order; with repeat wins allowed each slot is drawn independently. The list of people who missed out is printed too, so you can see who is still waiting.
Probability and assumptions
Every entrant is assumed equally likely with no weighting. The chance per person is slots divided by entrants when repeat wins are blocked, and 1 minus (1 minus 1 divided by entrants) raised to the number of slots when they are allowed; the result line states which formula was used. Draws weighted by entries per person, and any prize value or tax handling, are not covered. The browser Math.random function is not a cryptographically secure random source, so do not use it for draws that carry legal weight or money. Up to 300 names, 20 tiers and 300 winner slots in total are handled. Written as of October 2026.
Frequently asked questions
Write one line per tier in the tier box, with the label and the head count separated by a comma. Three winners for second place and five for third are fine, and up to 20 tiers are handled.
Turn on repeat wins and every slot is drawn independently, so one person can appear in several tiers. Turn it off and the winners are taken in order from a shuffled roster, so nobody wins twice.
The browser Math.random function is not a cryptographically secure random source. Keep it for office events and club giveaways rather than draws that carry legal weight or money.