🛝Toolio
À propos Contact

🪜 Jeu de l'Échelle (Amidakuji)

Cliquez sur « Dessiner l'échelle » et l'outil trace une ligne verticale par joueur, puis répartit des barreaux horizontaux sur 12 rangées fixes à l'aide de Math.random(). Puisque chaque barreau ne permet d'échanger que deux lignes voisines et que deux barreaux ne peuvent jamais se toucher sur la même rangée, l'échelle est mathématiquement garantie pour attribuer à chaque joueur exactement un résultat — aucun joueur ne se retrouve avec deux résultats, peu importe où les barreaux se trouvent. Cliquez ensuite sur un nom et le canevas redessine la même échelle avec le chemin de ce joueur mis en évidence, afin que vous puissiez observer le processus de décision étape par étape au lieu de simplement obtenir le résultat.

Le jeu de l'échelle génère aléatoirement un amidakuji (loterie ghost-leg) dans votre navigateur, en utilisant JavaScript's Math.random() pour placer les barreaux et l'API HTML Canvas pour dessiner et animer le chemin de chaque joueur jusqu'à un résultat distinct.

Touchez un nom pour tracer son chemin.

Confidentiel par conception. Cet outil fonctionne entièrement dans votre navigateur — rien de ce que vous saisissez n'est téléversé ni stocké, et il marche hors ligne.

À propos

L'affirmation de justice ici n'est pas une publicité — elle découle directement de la manière dont les barreaux sont placés. Chacune des 12 rangées est construite en parcourant chaque paire de lignes voisines et en lançant Math.random() < 0,45 pour un barreau, mais le code saute délibérément une position si la position à sa gauche vient de recevoir un barreau (« !(i > 0 && row[i-1]) »). Ce seul garde garantit qu'aucune rangée ne peut jamais contenir deux échanges superposés, donc chaque rangée est, en soi, un ensemble propre d'échanges non superposés — une permutation des colonnes. Empiler douze de ces rangées les unes sur les autres revient simplement à composer douze permutations successives, et une composition de permutations est toujours elle-même une permutation. C'est pourquoi deux joueurs ne peuvent jamais se retrouver avec le même résultat ici — c'est non seulement peu probable, mais structurellement impossible, peu importe les résultats aléatoires obtenus.

Ce garantie ne couvre cependant pas la manière dont les résultats se répartissent *uniformément* sur toutes les paires possibles. L'échelle utilise toujours les mêmes 12 rangées, peu importe le nombre de joueurs que vous entrez — le code a cette valeur fixe comme constante, et non comme une valeur qui s'adapte au nombre de joueurs. Pour la plage de 3 à 10 joueurs pour laquelle l'outil a été conçu, 12 rangées de lancers indépendants à 45 % de probabilité donnent suffisamment de croisements pour que l'effet ressemble à un mélange authentique. Si vous allez jusqu'à 30 ou 50 noms, cependant, 12 rangées ne sont simplement pas suffisantes pour atteindre toutes ces paires possibles avec des probabilités égales — les joueurs ont plus de chances de se retrouver près de la colonne d'où ils sont partis qu'un mélange uniforme ne le produirait. Si vous avez besoin d'un mélange aléatoire équitable pour un grand groupe, un randomizer plat est un outil mathématique plus adapté qu'une échelle limitée à une douzaine de rangées.

Il est également utile d'être direct sur ce que Math.random() est et ce qu'il n'est pas. C'est le générateur de nombres pseudo-aléatoires intégré au navigateur — rapide, suffisamment bon pour décider qui fait les tâches ménagères, et quelque chose qu'un participant ne peut généralement pas influencer depuis l'extérieur de la page. Mais il n'est pas sécurisé cryptographiquement : son état interne est, en principe, prédicible si quelqu'un peut observer suffisamment de ses sorties ou connaît l'algorithme du moteur, c'est pourquoi les tirages au sort avec argent réel, les loteries certifiées et tout ce qui a des enjeux légaux utilisent crypto.getRandomValues() ou un générateur de nombres aléatoires audité et certifié. Cet outil n'utilise ni l'un ni l'autre, et il n'en a pas besoin pour diviser les tâches ou choisir qui paie le café — juste n'utilisez pas cet outil — ou tout autre outil basé sur Math.random() — pour un tirage au sort impliquant de l'argent réel, des prix avec un poids légal ou toute situation où un participant a un intérêt à déchiffrer le tirage.

Du côté de l'interaction : « Dessiner l'échelle » exécute l'ensemble du processus de placement des barreaux à partir de zéro, donc chaque clic est un tirage indépendant sans aucun souvenir du précédent. « Révéler tout » saute le processus de révéler un nom à la fois et affiche directement toutes les paires joueur-résultat sur la même échelle d'un seul coup. Il n'y a aucun bouton de sauvegarde, d'exportation ou de partage dans cette version — l'échelle n'existe que sous forme de pixels sur l'élément canvas, et recharger la page efface tout, ainsi que les deux zones de texte, qui reviennent aux noms et prix d'exemple. Si vous souhaitez conserver un enregistrement d'un résultat, la seule option est d'utiliser l'outil de capture d'écran natif de votre navigateur ou appareil avant de naviguer ailleurs. Tout le reste concernant l'outil est exactement comme annoncé : il fonctionne entièrement côté client sans aucune demande réseau une fois la page chargée, donc rien que vous tapez n'est jamais envoyé, et il continue à fonctionner même sans connexion Internet.

Comment l'utiliser

  1. Entrez le nom de chaque joueur dans la zone Joueurs, un nom par ligne — les noms d'exemple (Amy, Ben, Cara, Dan) ne sont là que pour montrer le format et peuvent être remplacés entièrement.
  2. Entrez les résultats correspondants dans la zone Résultats, un par ligne — l'outil refusera de dessiner et affichera une erreur si les deux listes n'ont pas le même nombre de lignes.
  3. Cliquez sur « Dessiner l'échelle » pour exécuter un nouveau cycle de Math.random() et révéler un nouveau jeu de barreaux sur le canevas — chaque clic est un tirage indépendant.
  4. Cliquez ou touchez sur le nom d'un joueur au-dessus de l'échelle pour animer leur chemin unique en couleur d'accentuation, de haut en bas, et révéler leur résultat correspondant en dessous.
  5. Cliquez plutôt sur « Révéler tout » si vous préférez sauter la révélation un par un et voir toutes les paires joueur-résultat imprimées d'un seul coup sur la même échelle.

FAQ

L'échelle utilise-t-elle un générateur de nombres aléatoires vraiment aléatoire et imprévisible ?
Elle utilise le Math.random() intégré au navigateur, et non le crypto.getRandomValues() sécurisé cryptographiquement. Cela est tout à fait acceptable pour diviser les tâches ou décider qui paie le café, mais l'état interne de Math.random() n'est, en principe, pas immuable si quelqu'un peut observer suffisamment de sorties précédentes. Ne utilisez pas cet outil — ou tout autre outil basé sur Math.random() — pour un tirage au sort impliquant de l'argent réel, des prix avec un poids légal, ou toute situation où un participant a un intérêt à déchiffrer le tirage.
L'attribution des résultats est-elle vraiment un à un, ou pourrait-elle deux joueurs se retrouver avec le même prix ?
Un à un est garanti par construction, pas par chance. Chaque barreau ne connecte que deux lignes voisines, et le code refuse explicitement de placer deux barreaux superposés sur la même rangée. Cela fait de chaque rangée de l'échelle un petit mélange non superposé, et empiler douze de ces mélanges ne peut jamais pointer deux lignes de départ vers la même ligne de fin — l'attribution est une bijection mathématique, peu importe les résultats aléatoires obtenus.
L'échelle reste-t-elle juste une fois que j'ajoute beaucoup de joueurs ?
C'est la limite honnête : l'échelle utilise toujours 12 rangées fixes, indépendamment du nombre de joueurs. Avec les 3 à 10 joueurs pour lesquels cet outil a été conçu, c'est suffisant pour que l'effet ressemble à un mélange équitable. Si vous entrez 30 ou 50 noms, cependant, 12 rangées ne peuvent pas produire suffisamment de croisements pour répartir les résultats de manière uniforme sur toutes ces paires possibles — les joueurs ont tendance à se retrouver plus près de leur position de départ qu'un mélange uniforme ne le produirait. Pour un grand groupe, un outil d'attribution aléatoire plate est plus adapté qu'une échelle limitée à 12 rangées.
Puis-je sauvegarder ou partager mon échelle terminée ?
Non via l'outil lui-même — il n'y a aucun bouton de sauvegarde, de téléchargement ou de partage dans cette version. L'échelle n'existe que sous forme de pixels dessinés sur l'élément canvas pendant que la page est ouverte. Si vous souhaitez un preuve du résultat (le classique « capture d'écran pour trancher le débat »), utilisez la fonction de capture d'écran native de votre navigateur ou appareil avant de recharger la page — recharger réinitialise le canevas et les deux zones de texte vers les données d'exemple.
Cet outil envoie-t-il quelque chose, et fonctionne-t-il sans Internet ?
Aucun envoi, et oui, il fonctionne hors ligne. Le placement des barreaux, le dessin du canevas et le suivi des chemins s'exécutent tous à l'intérieur du moteur JavaScript de votre navigateur, sans aucune demande réseau, donc l'outil continue à fonctionner après que la page ait été chargée, même sans connexion Internet, et les noms et résultats que vous tapez ne quittent jamais votre appareil.
Cet outil téléverse-t-il mes données ?
Non. Tout s'exécute dans votre navigateur, vos données ne quittent jamais votre appareil — et une fois la page chargée, cela marche même hors ligne.