Selector aleatorio de nombres y elementos
Una entrada por línea y después elige qué hacer con ellas. El sorteo usa crypto.getRandomValues(), la misma fuente de azar que los navegadores usan para las claves de cifrado, en lugar de la mezcla común a la que recurre casi cualquier página, que —como explican las notas de abajo— no es realmente aleatoria.
Solo en el modo Elegir. Cada sorteo devuelve esa cantidad de entradas distintas.
Solo en el modo Dividir. Los tamaños quedan con una diferencia máxima de una entrada.
Las líneas en blanco siempre se omiten y los espacios de los extremos se recortan. Borrar a los ganadores es la forma de hacer varias rondas sin que nadie gane dos veces.
Resultado
La mezcla que casi todo el mundo escribe está rota
Busca cómo mezclar una lista en JavaScript y la primera respuesta casi siempre es una sola línea: ordenar el array con un comparador que devuelve un número al azar. Es corta, parece ingeniosa y no produce un orden aleatorio.
Un algoritmo de ordenamiento da por sentado que el comparador es coherente: que si le dicen que A va antes que B, eso sigue siendo cierto. Dale en cambio una moneda al aire y el resultado depende por completo de qué pares compara ese algoritmo en particular, y en qué orden. La distribución no es uniforme y el sesgo no es sutil: los elementos tienden a terminar cerca de donde empezaron, y el patrón cambia entre navegadores porque sus implementaciones de ordenamiento son distintas.
El algoritmo correcto es Fisher-Yates, y no es más difícil. Recorre la lista desde la última posición hacia atrás. En cada paso, elige una posición al azar en ese punto o antes e intercambia los dos elementos. Todos los órdenes posibles salen con la misma probabilidad, toca cada elemento una sola vez y es lo que se ejecuta cuando presionas Mezclar aquí arriba.
De dónde sale el azar
Math.random() es un generador pseudoaleatorio: una fórmula fija, sembrada una sola vez, que produce una secuencia que parece aleatoria y está completamente determinada por esa semilla. Es rápido y perfectamente válido para darle variación a una animación. Pero no está pensado para ser impredecible: con suficientes salidas consecutivas se puede reconstruir su estado interno y deducir los valores siguientes.
Esta herramienta usa crypto.getRandomValues(), que toma datos de la fuente de azar criptográfico del sistema operativo, la misma que se usa para generar claves de cifrado. Para decidir quién paga el café es exagerado. Para un sorteo donde alguien se lleva algo, elimina toda una categoría de discusiones y no cuesta nada.
La trampa del módulo
Conseguir un número al azar entre 0 y 4 mil millones es fácil; convertirlo en un número entre 0 y 9 es donde la gente se resbala. Lo obvio es tomar el resto de dividir entre 10. Pero 2^32 no es múltiplo de 10, así que el pedazo sobrante en la parte alta del rango hace que los primeros resultados sean apenas un poco más probables que el resto. Con listas de este tamaño el efecto es demasiado pequeño para notarlo. Aun así vale la pena corregirlo: descarta cualquier valor que caiga en ese bloque final incompleto y vuelve a sortear. Eso es un sorteo extra en casos rarísimos, a cambio de una distribución exactamente pareja en lugar de casi pareja.
Lo aleatorio no parece aleatorio
Elige un nombre de veinte, devuélvelo a la lista y elige otra vez: hay una probabilidad de uno en veinte de que salga el mismo nombre dos veces. La gente lee eso como un error. Es lo contrario: un generador que se negara a repetirse sería el sesgado. Si necesitas varios ganadores distintos, sube "cuántas elegir" —un solo sorteo siempre devuelve entradas distintas— o activa "borrar a los ganadores de la lista" y haz las rondas una por una.
El mismo instinto produce la falacia del jugador en la rifa de la oficina. A nadie "le toca". Cada sorteo ignora por completo el anterior, y la única forma de darle mejores probabilidades a alguien es ponerlo en la lista más de una vez, que también es la única ponderación que admite esta herramienta. Dos líneas con el mismo nombre dan el doble de probabilidad; solo acuérdate de desmarcar "ignorar líneas repetidas" primero, porque esa opción existe para limpiar datos pegados.
Dividir en equipos
El modo Dividir mezcla la lista entera y después reparte las entradas de a una, como si fueran cartas. Eso mantiene los grupos con una diferencia máxima de un integrante aunque la lista no se divida en partes iguales, y hace que las personas sobrantes sean elegidas al azar en vez de ser siempre las que estaban al final de la lista. Es aleatorio, no equilibrado: la herramienta no sabe nada de habilidad, antigüedad ni de quién no puede estar en el mismo grupo que quién.
Lo que no puede hacer por ti
- Demostrarle algo a un escéptico. No hay semilla que publicar, ni marca de tiempo, ni registro, ni comprobante. El resultado existe solo en tu pantalla. Para un sorteo público con premios reales, hazlo en una llamada grabada o usa un servicio que guarde la lista de participantes y el resultado; no porque esto sea menos justo, sino porque una justicia que no puedes demostrar no vale mucho en una discusión.
- Leer datos estructurados. Las líneas son entradas. Una fila de CSV pegada se convierte en una sola entrada, comas incluidas, no en una entrada por celda.
- Mostrar listas enormes. El resultado se detiene a las 500 filas y te dice cuántas dejó fuera. El sorteo en sí sigue cubriendo la lista completa.
- Recordar nada. Recarga la página y la lista desaparece, junto con quién ya ganó. Copia el resultado antes de cerrar la pestaña.
Preguntas frecuentes
¿Es realmente aleatorio?
Usa crypto.getRandomValues(), la fuente de azar criptográfico de tu navegador, junto con una mezcla Fisher-Yates y muestreo por rechazo, así que ninguna entrada queda ni un poco favorecida. Es una garantía más fuerte que la de la mayoría de los sitios de sorteos, que usan Math.random() y una mezcla basada en ordenar.
¿Puede salir el mismo nombre dos veces?
Dentro de un mismo sorteo no: si pides tres, salen tres entradas distintas. Entre sorteos separados claro que puede, porque cada sorteo empieza de cero. Marca "borrar a los ganadores de la lista" para hacer varias rondas sin repeticiones.
¿Puedo hacer que una entrada tenga más probabilidad de ganar?
Solo poniéndola más de una vez, y para que eso cuente tienes que desmarcar "ignorar líneas repetidas". No hay campo de peso ni de porcentaje, y es un límite deliberado, no un olvido.
¿Mi lista se sube a algún lado?
No. La página no hace ninguna petición de red después de cargar, el sorteo ocurre en tu pestaña y no se guarda nada. Recargar la página borra la lista, así que copia lo que necesites conservar.
¿Puedo usarlo para sortear un premio?
El sorteo es justo, pero no produce ninguna prueba de que lo fue. No hay registro, ni semilla, ni marca de tiempo, así que si los participantes pueden discutir el resultado, graba la pantalla mientras sorteas o usa un servicio pensado para sorteos verificables.
Última actualización 19 de septiembre de 2026