¿Cómo funciona un algoritmo aleatorio en general? ¿Hay algunos algoritmos de aprendizaje automático también involucrados?

Un algoritmo Shuffle no tiene nada que ver con el aprendizaje automático.

¿Qué es un algoritmo aleatorio aleatorio?

Considere una matriz con elementos distintos A [1… n]

Un algoritmo aleatorio perfectamente imparcial barajaría aleatoriamente todos los elementos de la matriz de manera que después de barajar:

1.La probabilidad de que la operación de barajado produzca una permutación particular de la matriz original es la misma para todas las permutaciones (es decir, ¡ya que hay n! permutaciones, la probabilidad de que la operación aleatoria produzca una permutación particular es 1 / n!

2.Para cualquier elemento e en la matriz y para cualquier posición j (1 <= j <= n), la probabilidad de que el elemento termine en la posición A [j] es 1 / n

El Shuffle de Fisher-Yates

barajar (A [1… n]) {

para i = 1 a n {

// Encuentra un número entero aleatorio entre i y n inclusive

int rand = ALEATORIO (i, n);

intercambie A [i] con A [rand];

}

}

Simulación de Shuffle Fisher-Yates

Quizás te interese esta publicación de blog que ofrece una comparación de Fisher-Yates versus otro algoritmo de barajado.

Si simulamos Fisher-Yates para una matriz {1,2,3}, obtenemos estos resultados:

Cada permutación está igualmente representada, lo que significa que la combinación aleatoria es imparcial.

Prueba teórica de que el algoritmo de barajado anterior es perfectamente imparcial

Para cualquier elemento e, la probabilidad de que se baraje en la primera posición

= probabilidad de que se seleccione para intercambiar cuando i = 1

= 1 / n

Para cualquier elemento e, la probabilidad de que se baraje en la segunda posición

= probabilidad de que NO se seleccione para la primera posición x probabilidad de que se seleccione para intercambiar cuando i = 2

= (n-1) / nx 1 / (n-1)

= 1 / n

Para cualquier elemento e, la probabilidad de que se baraje en una posición particular = 1 / n

La idea clave es hacer intercambios aleatorios, pero asegurarse de que un elemento solo se pueda intercambiar una vez. El algoritmo Fisher-Yates es una aplicación muy simple y efectiva de este principio.
Si busca en Google las visualizaciones de Fisher Yates, encontrará algunas demostraciones muy hermosas del algoritmo. Es realmente simple y puede codificarlo en unas pocas líneas en la mayoría de los idiomas.

La mezcla es un problema resuelto, tiene algoritmos para crear una permutación aleatoria de una matriz, por lo que no necesita aplicar Machine Learning. ML ayuda cuando no tienes un algoritmo para que aprendas uno de los datos.

Hasta donde yo sé, los algoritmos aleatorios son solo formas rápidas de obtener una permutación aleatoria. No creo que haya una buena manera de aprovechar el aprendizaje automático para hacerlo mejor.