Dessiner les noms d'un chapeau virtuel
Mélanger un tas de noms dans le chapeau, et que tout le monde choisir un!
Bienvenue aux utilisateurs de Google!
J'espère que vous apprécierez cette page fantasque. Si vous trouvez ce jeu amusant ou utile (ou ne), envoyez-moi une note sur Google+ à.
l'algorithme
Le « chapeau virtuel » fait suite à une série spécifique d'étapes pour tirer tous les noms du chapeau:- Chaque personne tire à son tour, en commençant par la première personne dans la liste.
- À son tour d'une personne:
- il secoue le chapeau
- il retire un nom du chapeau
- Si quelqu'un tire son nom, ou si une « boucle » est détectée, le tirage au sort est considéré comme « injuste » et tout le monde tire à nouveau.
liste des numéros
Il y a environ 21000000000000 façons d'attirer 17 noms d'un chapeau (pour vous les types de mathématiques, il est n-1!). Le « chapeau virtuel » simule brassage (secouant le chapeau pour remuer les noms) en utilisant un générateur de nombres aléatoires, ce qui est une façon élégante de dire que chaque lecture aléatoire est un peu différent, mais ils commencent tous par un « numéro de la liste. »
Si vous venez de jeter des noms dans le chapeau sans fournir un numéro de la liste, le chapeau virtuel fera une place (jusqu'à 4 chiffres). Le « numéro de la liste », est imprimé au-dessus de la sortie.
Le numéro de liste peut être utilisée pour identifier un dessin; le même numéro de liste produira toujours les mêmes résultats du tirage. Les différents numéros de la liste ne sont pas garantis pour produire des résultats différents, cependant. Il y a seulement 120 façons de tirer 6 noms (beaucoup plus petit que l'espace utilisé pour la liste #).
Injustice
Quand un groupe de personnes tirer les noms d'un chapeau, parfois la dernière personne pour obtenir le chapeau devra dessiner son propre nom; ceci est un tirage inéquitable. Lorsque le « chapeau virtuel » détecte cette condition, il suffit de dessiner à nouveau tous les noms (après avoir mélangé le chapeau, en ajoutant 1 au numéro de la liste).
Une « boucle » se produit quand un sous-ensemble de personnes dessiner le nom de l'autre. Par exemple:- Alice => Bob
- Bob => Carol
- Carol => Alice
- Doug => Edward
- Edward => Frances
- Frances => Doug
Le groupe Alice, Bob, Carol ne comprend pas le reste des participants.
Si cette condition est détectée, le tirage est considéré comme invalide et est exécuté à nouveau le numéro de liste supérieur suivant; le processus se répète jusqu'à ce qu'un étirage est valide.
Une boucle est détectée en parcourant la liste dans l'ordre - dans l'exemple ci-dessus, Alice -> Bob -> Carol -> Alice. Si nous parvenons à trouver tous les noms avant de trouver une répétition, le tirage est valide (pas de boucles). Ceci est une variante de l'algorithme « de tortue et le lièvre » pour détecter des boucles dans une liste chaînée de taille inconnue.