VITON13School
Herramientas gratuitas de la escuela

Ruleta de nombres: cómo elegir alumnos y hacer equipos al azar con justicia

Una ruleta de nombres elige un nombre de una lista de forma que todos tengan la misma probabilidad: con 25 alumnos, cada uno tiene 1 entre 25 en cada tirada. Para ser justa necesita un buen generador aleatorio, como crypto.getRandomValues del navegador, y quitar cada nombre elegido cuando todos deben salir exactamente una vez.

Por , fundador de VITON13 SCHOOL
Bolas de bingo numeradas de muchos colores amontonadas dentro de un bombo de alambre

Elegir a un alumno al azar parece trivial, pero en clase suelen fallar dos cosas: siempre salen los mismos nombres y los equipos quedan descompensados. Esta guía explica qué hace justo un sorteo, por qué se puede confiar en los números aleatorios del ordenador, la diferencia entre sacar con y sin reposición y cómo repartir una clase en equipos, y al final te lleva a una ruleta y a un generador aleatorio gratuitos.

Ideas principales

  • Un sorteo es justo cuando todos los nombres tienen la misma probabilidad; con 30 nombres, 1 entre 30 en cada tirada.
  • crypto.getRandomValues usa un generador pseudoaleatorio con una semilla de entropía suficiente y apto para criptografía: mucho más de lo que pide un sorteo en clase.
  • Con reposición, los nombres se repiten más de lo que parece: en 10 tiradas entre 30 nombres, la probabilidad de que alguno salga dos veces ronda el 82 %.
  • Para que todos salgan una vez, saca sin reposición; para hacer equipos, baraja toda la lista y repártela, de modo que los tamaños difieran como mucho en uno.

¿Qué hace que una ruleta de nombres sea justa?

Que en cada tirada todos los nombres tengan exactamente la misma probabilidad. Con 25 nombres en la lista, cada uno tiene 1 entre 25, salga quien salga la vez anterior. La justicia está en el método y no en un resultado concreto: un sorteo justo puede elegir al mismo alumno dos veces seguidas, igual que una moneda justa puede salir cara dos veces.

Los métodos en papel también pueden ser justos. Papeletas iguales, dobladas del mismo modo y bien mezcladas en una bolsa dan a todos la misma oportunidad; papeletas de distinto tamaño, o un docente que puede verlas, no. El punto débil suele ser la mezcla, y un sorteo que alguien podría dirigir no le parecerá justo a la clase aunque lo sea.

Un ordenador elige de una lista numerando los nombres del 1 al n, tomando un número entero aleatorio en ese intervalo y leyendo el nombre que le corresponde. El cuidado está en un detalle. Los números aleatorios en bruto vienen en un rango fijo, y encajarlos en 1 a 25 con un simple resto favorece un poco a los resultados pequeños, porque ese rango rara vez se divide en 25 grupos iguales. Un generador cuidadoso descarta lo que sobra y vuelve a sacar: es el muestreo por rechazo.

[1]

¿El azar del ordenador es de verdad aleatorio?

En sentido estricto no, pero es lo bastante impredecible para cualquier clase. Por rapidez, el navegador no consulta una fuente realmente aleatoria para cada número: crypto.getRandomValues usa un generador pseudoaleatorio al que se le da una semilla con entropía suficiente, y el algoritmo tiene que ser apto para usos criptográficos. La semilla procede, por ejemplo, del generador aleatorio del propio sistema operativo.

Un generador pseudoaleatorio es una fórmula que convierte un valor inicial, la semilla, en una larga secuencia de números que se comporta como el azar. JavaScript tiene también Math.random, más sencillo, que MDN describe como una fuente no criptográfica: no promete que su resultado no se pueda predecir. Para un sorteo en el que la gente quiera confiar, como quién expone primero o quién gana un premio en clase, es mejor el generador criptográfico.

¿Cómo elegir nombres sin que se repitan?

Saca sin reposición: el nombre que sale abandona la lista hasta que todos hayan tenido su turno. En estadística esto da una muestra aleatoria simple, en la que cualquier grupo del mismo tamaño tiene la misma probabilidad de ser elegido, y sacar sin reposición es la forma habitual de obtenerla.

Con reposición, las repeticiones llegan pronto. En 10 tiradas entre 30 nombres, la probabilidad de que al menos uno salga dos veces ronda el 82 %, y tras 30 tiradas cada alumno conserva cerca de un 36 % de probabilidad de no haber salido nunca. Sin reposición, 30 tiradas llaman a los 30 alumnos exactamente una vez.

También se puede fijar el orden de toda una ronda barajando la lista. El método estándar es el algoritmo de Fisher-Yates, que Ronald Fisher y Frank Yates describieron en 1938 y que Richard Durstenfeld adaptó a los ordenadores en 1964. Recorre la lista desde el final e intercambia cada nombre con otro elegido al azar en su misma posición o antes; con una fuente aleatoria sin sesgo, todos los órdenes son igual de probables.

¿Cómo hacer equipos aleatorios en clase de forma justa?

Baraja toda la lista y reparte los nombres de uno en uno, como cartas: equipo 1, equipo 2 y así sucesivamente, y otra vez al equipo 1. Repartir mantiene los tamaños parejos. 30 alumnos en 4 equipos quedan en grupos de 8, 8, 7 y 7; 27 alumnos en equipos de 4 forman 7 equipos, seis de 4 y uno de 3.

Para llamar a los alumnos de uno en uno, usa la ruleta aleatoria gratuita de VITON13 SCHOOL. Escribe o pega hasta 100 nombres, uno por línea, y gira con un clic, con el botón «Girar», con la barra espaciadora o con Enter; el ganador se decide con crypto.getRandomValues antes de que la ruleta se mueva. Activa «Quitar al ganador» para que cada nombre salga de la ruleta tras su turno, y «Devolver» los vuelve a poner todos. «Pantalla completa» agranda la ruleta para el proyector, «Compartir» copia un enlace con la lista, y repetir una línea da a esa opción un segundo sector y más probabilidad.

Para sacar varios nombres a la vez o formar equipos, abre el generador de números aleatorios. En el modo «Lista», pega los nombres y elige cuántos sacar: salen sin repetirse. En el modo «Equipos», divide la lista en un número fijo de equipos o en equipos de un tamaño fijo; la lista se baraja y se reparte, así que los tamaños difieren como mucho en uno. Los últimos 20 resultados se guardan solo en tu navegador y no se envía nada.

[2][3]

En palabras sencillas

Una ruleta de nombres justa funciona como una baraja bien mezclada: ninguna carta sabe dónde va a caer. Sacar sin reposición es repartir la baraja hasta el final antes de volver a mezclar, para que todos tengan exactamente un turno.

Pruébalo

Pega la lista de tu clase en la ruleta, activa «Quitar al ganador» y gira hasta que quede un solo nombre.

Resultado esperado

Cada giro muestra un nombre en letra grande, y ese nombre sale de la ruleta al volver a girar. Cuando queda uno, ese alumno va el último, y «Devolver» empieza una ronda nueva.

Comprueba tu respuesta: Una clase de 24 se divide en 5 equipos repartiendo una lista barajada. ¿De qué tamaño son los equipos?

Cuatro equipos de 5 y uno de 4. Tras los primeros 20 nombres cada equipo tiene 4; los 4 nombres restantes van a los cuatro primeros equipos, así que 5 + 5 + 5 + 5 + 4 = 24.

Preguntas y respuestas

¿Puede una ruleta de nombres elegir el mismo nombre dos veces seguidas?

Sí, si los nombres vuelven a la lista. Cada tirada es independiente, así que con 25 nombres la probabilidad de repetir el mismo justo después es de 1 entre 25. Quitar a cada ganador lo evita.

¿Es más justa una ruleta que sacar papeletas de una bolsa?

Las dos son justas si se hacen bien. La bolsa depende de papeletas iguales y de una buena mezcla; esta ruleta decide el ganador con el generador criptográfico del navegador antes de empezar a girar, así que la animación no puede cambiar el resultado.

La próxima vez que necesites un voluntario o equipos, pon la lista de la clase en la ruleta o el generador gratuitos de VITON13 SCHOOL, saca sin reposición y deja que la clase vea el sorteo.

Fuentes y lecturas

  1. Fisher–Yates shuffle — Wikipedia ↗Fuentes revisadas:
  2. MDN Web Docs: Crypto.getRandomValues() ↗Fuentes revisadas:
  3. Simple random sample — Wikipedia ↗Fuentes revisadas: