Sorteador de opciones

Escribe tus opciones, una por línea, y deja que el azar elija una o decida el orden. Para dos opciones usa la moneda; para más, esta herramienta.

Sorteador de opciones

Escribe tus opciones y pulsa un botón.

Para qué sirve

Una moneda solo reparte dos opciones. Cuando son tres o más, necesitas otra cosa: este sorteador elige una opción al azar entre todas las que escribas o sortea el orden completo, algo útil para fijar turnos. Algunos usos habituales:

Si solo tienes dos opciones, la moneda es más ágil. Para más de dos y sin una moneda física, este es el método más rápido.

Cómo funciona por dentro

Una forma muy extendida de elegir al azar es usar un número aleatorio y calcular el resto de dividirlo entre el número de opciones. Parece correcto, pero tiene un sesgo: salvo que el total de números posibles sea múltiplo exacto de las opciones, algunas opciones quedan ligeramente favorecidas. El sesgo es diminuto con números grandes, pero existe, y es un error clásico de programación.

Este sorteador lo evita con muestreo con rechazo: genera un número aleatorio de 32 bits y, si cae en la franja final que desequilibraría el reparto, lo descarta y vuelve a intentarlo. Así cada opción tiene exactamente la misma probabilidad. Es la misma idea que se usa al repartir entre tres o más opciones con una moneda física: se lanza varias veces, se asignan combinaciones a las opciones y, si sale una combinación sobrante, se repite el turno. Lo explicamos paso a paso en cómo sortear entre varias opciones con una moneda.

Para el orden, la herramienta usa el algoritmo de mezcla de Fisher-Yates, que recorre la lista de atrás hacia delante e intercambia cada elemento con otro elegido al azar entre los que quedan. Con ese algoritmo, cada uno de los órdenes posibles tiene la misma probabilidad. Mezclar ordenando con un comparador aleatorio, un atajo habitual, no garantiza esa uniformidad.

Cosas que conviene saber

Fuentes

  1. Ronald A. Fisher y Frank Yates, Statistical Tables for Biological, Agricultural and Medical Research (1938), origen del algoritmo de mezcla; Donald Knuth lo describió en versión informática en The Art of Computer Programming, vol. 2.
  2. Documentación sobre crypto.getRandomValues: MDN Web Docs.

Sigue leyendo