Muchas herramientas "aleatorias" en línea, en silencio, no lo son — ordenar una lista con un comparador ingenuo Math.random() - 0.5, por ejemplo, produce una mezcla medible sesgada. Esta guía explica por qué el Selector Aleatorio usa la fuente aleatoria criptográfica del navegador en su lugar, cómo difiere elegir con y sin repetición, y por qué ejecutarse completamente del lado del cliente importa para cualquier cosa, desde rifas de oficina hasta selecciones más sensibles.
Por qué crypto.getRandomValues en lugar de Math.random
Math.random() no está especificado como criptográficamente seguro ni uniformemente distribuido entre navegadores y motores, y la selección ingenua de índices basada en módulo (Math.floor(Math.random() * n)) puede introducir un sesgo pequeño pero real hacia índices más bajos. crypto.getRandomValues combinado con muestreo por rechazo — descartando selecciones fuera de rango en lugar de usar módulo directamente — garantiza un resultado imparcial. Esta es la misma clase de aleatoriedad que los navegadores usan para generar claves de cifrado.
Elegir con o sin reemplazo
Las pestañas Elegir y Múltiples seleccionan un subconjunto de tu lista. Con el interruptor Sin repetición activado, cada entrada elegida se elimina del conjunto antes de la siguiente selección, así que nadie ni nada se elige dos veces. Si pides más selecciones únicas que entradas hay, la herramienta muestra un error de validación en lugar de dibujar repeticiones silenciosamente — reduce la cantidad a elegir, agrega más entradas, o desactiva Sin repetición.
Explicación de la mezcla Fisher–Yates
La pestaña Mezclar — y la lógica interna detrás de una selección múltiple sin repetición — usa el algoritmo Fisher–Yates: comenzando desde la última posición, la intercambia con una posición aleatoria anterior o igual, luego se mueve una posición a la izquierda y repite. Esto produce cada uno de los N! posibles órdenes con probabilidad igual, a diferencia de los enfoques ingenuos de "ordenar por comparador aleatorio", que se sabe que sesgan ciertos órdenes.
Cuándo usar cada modo
Usa Elegir para un solo ganador — el gran premio de una rifa o decidir quién va primero. Usa Múltiples para varios ganadores o una lista corta, con Sin repetición activado siempre que la misma persona o elemento no deba ganar dos veces. Usa Mezclar cuando necesites aleatorizar una secuencia completa, como un orden de exposición, un orden de asignación de equipos, o el orden de una lista de reproducción, en lugar de elegir un subconjunto.