This is a project I made in anticipation of a white elephant event at work. Using this program eliminates the possibility of someone drawiing their own name from the hat and has a much better random factor than using a hat with nameslips as well, since there is no human element. It uses the Fisher-Yates shuffle to mix up an array of integers, which are then used as the index on the list of names to randomly assign pairs. Once everyone has been paired, it displays the assignments with a "hash" (just a Caesar Cipher currently) so that people can't accidentally figure out other assignments.
This program has a certain element of trust, as I know all the people who are involved and I will be the one running it, so the chances for weird user errors is limited. I also display all pairings at once, so if someone were to go against the spirt of the game to find out other partners, they could. I did not feel these and other similar issues were worth dealing with, as this is meant to be a light-hearted game