arrastrando matrices con JavaScript
El algoritmo Fisher-Yates Shuffle ofrece un método efectivo para cambiar las matrices en JavaScript. Al intercambiar elementos aleatorios, garantiza que cada pedido posible tiene la misma posibilidad de ocurrir.
implementación de algorithm
el algoritmo de shuffle Fisher-y-shuffle puede implementarse de la siguiente manera:
function shuffle(a) { var j, x, i; for (i = a.length - 1; i > 0; i--) { j = Math.floor(Math.random() * (i 1)); x = a[i]; a[i] = a[j]; a[j] = x; } return a; }
Este algoritmo itera a través de la matriz en orden inverso, intercambiando cada elemento con un elemento aleatorio por delante en la matriz. La matriz resultante se baraja debido a la naturaleza aleatoria de los swaps.
use
la función de shuffle se puede usar para barajar una matriz usando la siguiente sintaxis:
var myArray = ['1', '2', '3', '4', '5', '6', '7', '8', '9']; shuffle (myArray);var myArray = ['1','2','3','4','5','6','7','8','9']; shuffle(myArray);
es6 versión
El algoritmo Fisher-yates se ha optimizado en es6:function shuffle (a) { para (dejar i = a.length-1; i> 0; i--) { const j = math.floor (math.random () * (i 1)); [a [i], a [j]] = [a [j], a [i]]; } regresar a; }
var myArray = ['1','2','3','4','5','6','7','8','9']; shuffle(myArray);
Implementation Prototype
Este algoritmo se puede implementar como un método de prototipo de matriz para facilitar el desplazamiento directo de las matrices:object.defineProperty (array.pototype, 'shuffle', {{ valor: function () { para (dejar i = this.length-1; i> 0; i--) { const j = math.floor (math.random () * (i 1)); [este [i], este [j]] = [this [j], este [i]]; } devolver esto; } });
var myArray = ['1','2','3','4','5','6','7','8','9']; shuffle(myArray);Esta implementación permite que las matrices se barajen usando la sintaxis arr.shuffle ().
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3