With festivities approaching I made a thing which allocates a thing in a set of things to another thing in that same set of things. This is suitable for generating a Secret Santa Mapping, which was its original purpose, but it is also suitable for generating games of Assassin, or possibly unsolvable versions of those 15-puzzle things made of slidey squares, or basically just any bijective function f from a finite set X into itself such that for all x in X, x =/= f(x). Requires Python3 because cx_freeze is too much effort right now (and I will probably edit the thing if I ever get the motivation), and it generates a .txt file for each name containing the mapping for that name, plus one containing the full map, all contained within a folder. This is overwritten any time you run, so watch out for that. This is so that the mapping can be secret to everyone if you want it to be.
This works by selecting two elements at random and transposing them, then repeating this until no element maps to itself. Not exactly the most elegant solution, or the quickest, but meh, it works.
Have fun. Note there is also no guarantee the program will halt, it is entirely possible (but unlikely) that it will run for an inordinate amount of time. File name stands for SecretSantaScript, thought it was a fun little contraction.