🪜 Juego de Escalera (Amidakuji)
Haz clic en Dibujar escalera y la herramienta dibuja una línea vertical por jugador, luego coloca horizontalmente las barras transversales a través de 12 filas fijas usando Math.random(). Como cada barra solo intercambia dos líneas vecinas y no se permite que dos barras en la misma fila se toquen, la escalera está garantizada matemáticamente para asignar a cada jugador exactamente un resultado — nadie se repite, independientemente de dónde caigan las barras. Toca un nombre después y el lienzo redibuja la misma escalera con la ruta de ese jugador resaltada, por lo que puedes ver el proceso de decisión paso a paso en lugar de simplemente recibir la respuesta.
El Juego de la Escalera genera una escalera de lotería de amidakuji (ghost-leg) aleatoria en tu navegador, usando Math.random() de JavaScript para colocar las barras y la API HTML Canvas para dibujar y animar la trayectoria de cada jugador hacia un resultado distinto.
Privado por diseño. Esta herramienta funciona por completo en tu navegador: nada de lo que introduces se sube ni se guarda, y funciona sin conexión.
Acerca de
La afirmación de justicia aquí no es marketing — surge directamente de cómo se colocan las barras. Cada una de las 12 filas se construye caminando a través de cada par de líneas vecinas y lanzando Math.random() < 0.45 para una barra, pero el código salta explícitamente un espacio si el de su izquierda acaba de recibir una barra ("!(i > 0 && row[i-1])"). Ese único guardia significa que ninguna fila puede contener dos intercambios superpuestos, por lo que cada fila, por sí misma, es un conjunto limpio de intercambios no superpuestos — una permutación de las columnas. Apilar doce de esas filas una encima de la otra es simplemente componer doce permutaciones seguidas, y la composición de permutaciones siempre es otra permutación. Eso es por qué dos jugadores terminar en el mismo resultado no solo es improbable aquí, sino estructuralmente imposible, independientemente de cómo salgan los lanzamientos aleatorios.
Esa garantía no cubre cómo *equitativamente* se distribuyen los resultados entre todas las posibles combinaciones. La escalera siempre usa las mismas 12 filas, sin importar cuántos jugadores escribas — el código tiene eso como una constante fija, no algo que cambie según el número de jugadores. Para el rango de 3 a 10 jugadores para el cual la herramienta está ajustada, 12 filas de lanzamientos independientes con un 45% de probabilidad ofrecen suficientes intercambios para sentirse como un verdadero mezclado. Si lo llevas a 30 o 50 nombres, sin embargo, 12 filas simplemente no son suficientes intercambios para alcanzar todas esas posibles combinaciones con probabilidades iguales — es más probable que las personas terminen cerca de la columna desde la que empezaron que en un mezclado verdaderamente uniforme. Si necesitas un emparejamiento aleatorio justo para un grupo grande, un mezclador plano es la herramienta matemática más adecuada que una escalera limitada a una docena de filas.
También es útil ser directo sobre qué es y qué no es Math.random(). Es el generador de números pseudoaleatorios integrado en el navegador — rápido, suficiente para decidir quién lava los platos, y algo que normalmente no puede influir un participante desde fuera de la página. Pero no es seguro criptográficamente: su estado interno, en principio, es predecible si alguien puede observar suficiente salida o conoce el algoritmo del motor, por eso las raffles con dinero real, loterías certificadas y cualquier situación con apuestas legales usan crypto.getRandomValues() o un generador de números aleatorios auditado y certificado. Esta herramienta no recurre a ninguno de esos, y no los necesita para dividir tareas o decidir quién compra el café — solo no coloques dinero real detrás de ella.
En cuanto a la interacción: "Dibujar escalera" ejecuta todo el proceso de colocación de barras desde cero, por lo que cada clic es un sorteo independiente sin recordar el anterior. "Revelar todo" salta el revelado uno por uno y imprime todas las combinaciones de jugador a resultado en la misma escalera de una vez. No hay botón de guardar, exportar o compartir en esta versión — la escalera existe solo como píxeles en el elemento canvas, y recargar la página la borra junto con las dos cajas de texto, que se reinician a los nombres y premios de ejemplo. Si quieres un registro del resultado, la única opción es usar la herramienta de captura de pantalla nativa de tu navegador o dispositivo antes de navegar lejos. Todo lo demás sobre la herramienta es exactamente como se anunció: funciona completamente en el cliente sin solicitudes de red una vez que la página se ha cargado, por lo que nada que escribas se sube nunca, y sigue funcionando sin conexión en absoluto.
Cómo usar
- Escribe el nombre de cada jugador en la caja de Jugadores, un nombre por línea — los nombres de ejemplo (Amy, Ben, Cara, Dan) solo muestran el formato y pueden reemplazarse por completo.
- Escribe los resultados correspondientes en la caja de Resultados, uno por línea — la herramienta rechazará dibujar y mostrará un error si las dos listas no tienen el mismo número de líneas.
- Haz clic en "Dibujar escalera" para ejecutar una nueva ronda de llamadas a Math.random() y revelar un nuevo conjunto de barras en el lienzo — cada clic es un sorteo independiente.
- Toca o haz clic en cualquier chip de nombre de jugador encima de la escalera para animar su ruta única en el color de acento desde la parte superior hasta la inferior y revelar su resultado asignado debajo.
- Haz clic en "Revelar todo" si prefieres saltar el revelado uno por uno y ver todas las combinaciones de jugador a resultado impresas en una sola escalera.
Preguntas frecuentes
- ¿La escalera usa un generador de números verdaderamente aleatorio e impredecible?
- Usa el Math.random() integrado del navegador, no el seguro criptográficamente crypto.getRandomValues(). Eso es completamente aceptable para dividir tareas o decidir quién compra el café, pero el estado interno de Math.random() no es, en principio, inmune a la predicción si alguien puede observar suficiente salida previa. No uses esta herramienta — ni ninguna escalera basada en Math.random() — para realizar una rifa con dinero real, premios con peso legal o cualquier situación en la que un participante tenga incentivo para descifrar el sorteo.
- ¿La asignación de resultados es realmente uno a uno, o podrían dos jugadores terminar con el mismo premio?
- Uno a uno está garantizado por construcción, no por suerte. Cada barra solo conecta dos líneas vecinas, y el código rechaza explícitamente colocar dos barras superpuestas en la misma fila. Eso hace que cada fila de la escalera sea un pequeño mezclado no superpuesto, y apilar doce de esos mezclados nunca puede apuntar dos líneas de inicio a la misma línea de fin — la asignación es una biyección matemática sin importar cómo caigan los lanzamientos aleatorios.
- ¿La escalera sigue siendo justa una vez que agrego muchos jugadores?
- Este es el límite honesto: la escalera siempre usa un número fijo de 12 filas, independientemente del número de jugadores. Con los 3 a 10 jugadores para los que esta herramienta está diseñada, eso es suficiente intercambios para sentirse como un mezclado justo. Introduce 30 o 50 nombres, sin embargo, y 12 filas no pueden producir cerca de suficientes intercambios para distribuir resultados de manera equitativa entre tantas combinaciones posibles — los jugadores tienden a terminar más cerca de su posición de inicio que en un mezclado verdaderamente uniforme. Para un grupo grande, una herramienta de asignación aleatoria plana es una mejor opción que una escalera limitada a 12 filas.
- ¿Puedo guardar o compartir mi escalera terminada?
- No a través de la herramienta en sí — no hay botón de guardar, descargar o compartir en esta versión. La escalera existe solo como píxeles dibujados en el elemento canvas mientras la página esté abierta. Si quieres una prueba del resultado (el clásico "captura de pantalla para resolver el debate"), usa la función de captura de pantalla nativa de tu navegador o dispositivo antes de recargar la página — recargar restablece el lienzo y ambas cajas de texto a los datos de ejemplo.
- ¿Esta herramienta sube algo, y funciona sin conexión a internet?
- Nada se sube, y sí, funciona sin conexión. La colocación de barras, el dibujo del lienzo y el rastreo de trayectorias se ejecutan dentro del motor de JavaScript de tu navegador sin solicitudes de red, por lo que la herramienta sigue funcionando después de que la página se haya cargado, incluso sin conexión en absoluto, y los nombres y resultados que escribes nunca dejan tu dispositivo.