I'd like to be able to hold contests that end with a prize drawing which occurs in-game, is interesting to watch, and is done by a method that's visibly random. I've come up with a method that seems workable if there are no more than 20-30 contestants, but my method doesn't scale up very well. I'm posting about it because others may find the method of interest, and also because I'm looking for a better way.
To award three prizes by random drawing (without replacement) from 16 contestants, I created one note for each contestant, writing the simple message "[NAME] is the winner!" I then put 16 SDBs on a wall, one for each contestant, and put one note in each box using a random ordering. I set prices to assign each box a number, using high prices (10000, 20000, etc.) to avoid having someone purchase my notes while I was setting up. For the drawing, I had two helpers. One helper used a 20-sided die to select a random number between 1 and 16 (ignoring ineligible numbers, if they came up). The other helper removed the note from the corresponding SDB (after I'd lowered the price to 1c) and read out the name of the prize winner.
I made a video of this prize drawing, which you can view if you wish at youtu.be/xp0Yyr5BM-o. The video has been edited to speed up the pace and to remove most (but not all) of UI interactions that would not be visible to onlookers. My thanks to those who participated in the event. I will not name them here, but you will see them if you view the video.
Of course one can hold a larger drawing simply by assigning each contestant a number, selecting a number at random, and then announcing the winner -- but this doesn't give viewers much to see and there's not much verifiability. Any ideas on how to hold a random drawing in-game for a large number of contestants using a visible and verifiable process?