Mezcla el orden de cualquier lista con una verdadera mezcla aleatoria Fisher-Yates.
Reordena al azar las líneas de cualquier texto con un algoritmo de mezcla uniforme. Pega una lista, haz clic en mezclar y obtén una versión aleatoria. Útil para aleatorizar el orden de los exámenes, sortear ganadores, generar listas de reproducción al azar y romper el sesgo del orden en cualquier dato basado en líneas. Todo se ejecuta de forma local en tu navegador; no se sube nada.
Mezclar significa producir una permutación aleatoria de la entrada. Todas las líneas siguen apareciendo, pero en otro orden. Una buena mezcla tiene dos propiedades: cada orden posible es igual de probable (distribución uniforme) y el algoritmo no introduce un sesgo que mantenga juntos los elementos cercanos. Las mezclas ingenuas que ordenan por una clave aleatoria fallan la primera propiedad; esta herramienta usa Fisher-Yates, el algoritmo estándar correcto, que garantiza ambas.
La salida contiene exactamente las líneas que pusiste, en orden aleatorio. No se agrega, quita, modifica ni duplica ninguna línea. Pasa la misma entrada dos veces y obtendrás dos órdenes distintos. De eso se trata.
Aleatorizar el orden de preguntas de un examen. Docentes y formadores mezclan los bancos de preguntas antes de generar una nueva versión del examen, para que el alumnado no comparta respuestas por número de pregunta. Mezcla la lista de preguntas y genera la versión A; vuelve a mezclar y genera la versión B.
Sortear ganadores de una lista. Una lista de participaciones de un concurso, boletos de una rifa o posibles candidatos. Mezcla la lista y toma los primeros N. Es defendible y reproducible si conservas la semilla (esta herramienta no expone semillas, por simplicidad, pero puedes documentar la lista de entrada y la fecha para poder auditarlo).
Generar listas de reproducción u órdenes de rotación al azar. Una lista de canciones, artículos o tareas que hay que rotar sin sesgo. Mezcla, guarda el orden y avanza por él en secuencia.
Aleatorizar usuarios o datos de prueba. Una lista de usuarios de prueba para un lanzamiento por fases, o una lista de muestras para un tratamiento de investigación. Mezcla para romper cualquier efecto latente del orden.
Generar ideas para escritura creativa. Una lista de elementos de trama, rasgos de personaje o detalles del escenario. Mezcla para producir combinaciones inesperadas que un orden humano habría pasado por alto.
Romper un orden accidental. A veces tienes datos que se ordenaron alfabética o cronológicamente por razones que ya no aplican, y quien los consume después espera un orden aleatorio. Mezcla para neutralizarlo.
Asignación en pruebas A/B. Dividir una lista de usuarios en dos grupos para una prueba A/B empieza por mezclar. Mezcla la lista, toma la primera mitad como grupo A y la segunda como grupo B. Ambos grupos tienen una composición aleatoria, que es lo que quieres.
Un error común es mezclar ordenando por una clave aleatoria: a cada elemento se le asigna un número al azar y se ordena por ese número. Suena correcto, pero en la práctica produce órdenes sesgados.
El sesgo viene de cómo comparan los elementos los algoritmos de ordenamiento. El Array.prototype.sort() de JavaScript usa Timsort o algo similar, que hace O(n log n) comparaciones. Si tu función de comparación devuelve un número aleatorio cada vez, estás respondiendo «¿es A menor que B?» de forma inconsistente: a veces sí, a veces no, según el número aleatorio que salga. El algoritmo de ordenamiento se confunde, produce resultados no uniformes y ciertos órdenes se vuelven más probables que otros.
La solución es la mezcla Fisher-Yates: recorre el arreglo desde el último elemento hasta el primero y, en cada posición, intercámbialo con un elemento anterior elegido al azar. Esto produce cada permutación con una probabilidad exactamente igual y se ejecuta en tiempo O(n). Esta herramienta implementa Fisher-Yates correctamente.
La mezcla usa el Math.random() de JavaScript como fuente de aleatoriedad. Es un generador de números pseudoaleatorios. La secuencia la determina un estado interno que se siembra a partir de la entropía del sistema al cargar la página. La salida es estadísticamente uniforme y perfectamente válida para mezclar preguntas de examen, sortear ganadores de una rifa, generar listas de reproducción o cualquier aplicación donde la predicción adversaria no sea una preocupación.
Para aplicaciones donde alguien podría beneficiarse de predecir tu mezcla (generación de claves criptográficas, sistemas de lotería seguros, juegos de azar), Math.random() no es aceptable. Usa una fuente criptográficamente segura como crypto.getRandomValues() en una implementación a medida, o un generador de números aleatorios por hardware.
Para todo lo demás, que es casi todo, Math.random() es lo que necesitas.
Mezclar no elimina duplicados. Si tu entrada tiene líneas duplicadas, la salida también las tendrá, solo que en distintas posiciones. Para eliminar duplicados antes de mezclar, pasa primero la entrada por Eliminar Duplicados.
Mezclar no es lo mismo que muestrear. Mezclar produce un orden aleatorio de todas tus líneas. Muestrear produce un subconjunto aleatorio. Si quieres N elementos elegidos al azar de una lista más grande, mezcla y toma los primeros N. Pero ten en cuenta que has usado toda la lista, no solo el tamaño de la muestra.
«Aleatorio» puede producir patrones sorprendentes. Una salida realmente aleatoria a veces contiene rachas, grupos y patrones aparentes. Si tu lista mezclada tiene 5 elementos seguidos en orden alfabético, no es un error: es algo que se espera que ocurra de vez en cuando con una mezcla verdaderamente uniforme. Vuelve a mezclar si te molesta.
Reproducibilidad. Esta herramienta no expone un campo de semilla, así que no puedes reproducir una mezcla concreta. Si necesitas reproducibilidad (para un registro de auditoría o un caso de prueba), guarda una copia de la salida mezclada. No esperes recrearla solo a partir de la entrada.
Tres formas comunes de mezclar, tres contextos distintos.
Esta herramienta. La más rápida para listas de líneas pequeñas o medianas en un navegador, sin instalar nada, se ejecuta en local. Funciona bien hasta unos cuantos cientos de miles de líneas.
El comando shuf en Unix, o sort -R como alternativa portátil. Lo mejor para archivos muy grandes, programable, se integra en cadenas de procesos. shuf es la opción correcta para archivos demasiado grandes para pegarlos cómodamente en un navegador, o para procesos automatizados que mezclan como parte de flujos más amplios.
El random.shuffle() de Python. Lo mejor cuando mezclar es un paso dentro de un script más grande, o cuando necesitas sembrar la mezcla para que sea reproducible (random.seed(42); random.shuffle(items) siempre produce la misma mezcla).
Pega el texto en el cuadro de entrada. La herramienta divide el texto por los saltos de línea, aplica la mezcla Fisher-Yates al arreglo resultante y vuelve a unir los resultados con saltos de línea para la salida. Las líneas vacías se tratan como cualquier otra: se mezclan junto con todo lo demás, no se eliminan.
La implementación se ejecuta en tiempo O(n) y con memoria adicional constante. Las entradas de varios megabytes se mezclan en mucho menos de un segundo en equipos modernos.
Mezcla siempre la misma fuente dos veces como comprobación. Si usas la salida de la mezcla como base de una decisión auditada (un ganador, un grupo de muestra), mezcla la entrada tres veces y verifica que las tres salidas sean distintas. Si son idénticas, algo anda mal con la fuente de aleatoriedad.
Para listas muy largas, muestrea después de mezclar. ¿Necesitas 50 elementos al azar de una lista de 5000? Mezcla toda la lista y toma los primeros 50. No intentes muestrear 50 índices aleatorios de forma directa. Fisher-Yates es la forma más limpia de garantizar un muestreo uniforme sin reemplazo.
Para reproducir, guarda una copia de la salida. Guarda la salida mezclada en un archivo con su fecha y hora antes de usarla para cualquier decisión. La mezcla en sí no es reproducible, pero el resultado sí.
Estadísticamente sí: hay distribución uniforme en todos los órdenes posibles. Criptográficamente no: usa un generador de números pseudoaleatorios que es predecible para quien pueda determinar su estado interno. Para el uso cotidiano esta distinción no importa; para aplicaciones sensibles a la seguridad, sí.
Sí. La mezcla reordena las líneas pero no las agrega, quita ni fusiona. Si «manzana» aparece tres veces en la entrada, «manzana» aparece tres veces en la salida, en posiciones aleatorias.
Las líneas vacías se tratan como líneas normales y se mezclan junto con el resto. No se eliminan. Si quieres quitarlas, pasa primero la entrada por la herramienta Eliminar Espacios con el modo de «quitar saltos de línea», o quítalas a mano.
De forma directa, no. Divide la lista a mano, mezcla la parte que quieras mezclar y luego vuelve a concatenarla.
Esta herramienta no admite la mezcla sincronizada. La técnica habitual es combinar las listas en una sola con un delimitador (línea 1: «list1_item1 | list2_item1»), mezclar y luego volver a dividir. O usar un script con random.shuffle y una permutación de índices.
De eso se trata. Cada clic invoca una secuencia de números aleatorios nueva, sembrada a partir de la entropía del sistema. Reproducir requiere guardar la salida, no regenerarla.