Sobre esta ferramenta
O Gerador de Amigo Secreto emparelha aleatoriamente um grupo para uma troca de presentes de modo que todos deem exatamente um presente e recebam exatamente um — e ninguém tire o próprio nome. Cole um nome por linha, adicione quaisquer pares de exclusão que precisar (por exemplo, para que um casal não seja emparelhado entre si) e clique em Atribuir.
Nos bastidores, ele constrói um derangement válido usando uma atribuição cíclica: os nomes são embaralhados com um embaralhamento Fisher-Yates movido pelo gerador criptográfico do navegador (crypto.getRandomValues), depois cada pessoa na ordem embaralhada dá para a próxima pessoa ao redor do ciclo, com a última dando para a primeira. Um único ciclo garante que não haja auto-correspondências e que todos deem e recebam uma vez. Para honrar as exclusões, a ferramenta reembaralha até alguns milhares de vezes até encontrar um arranjo que não quebre nenhuma regra; se suas restrições não puderem ser satisfeitas, ela avisa em vez de retornar uma lista ruim.
Esta é uma ferramenta de um único dispositivo para o organizador — ela mostra a lista completa de quem dá para quem na tela, então rode em privado. Tudo acontece localmente no seu navegador: nada é enviado e funciona offline. Insira exclusões como dois nomes por linha separados por vírgula, dois-pontos ou traço (por exemplo, "Alex, Jordan").