[Resuelto] Duda javascript: desordenar array con bucle

Iniciado por masterkein, 12 Mayo 2018, 18:28 PM

0 Miembros y 1 Visitante están viendo este tema.

masterkein

Estoy haciendo un ejercicio para un trabajo y tengo un problema a la hora de desordenar un array. Es decir, tengo un array llamado "numeros" y una función que lo desordena. Después creo un array vacío llamado "numerosDesordenados" el cual lo llenaré con tres posiciones, las cuales serán tres veces el array "numeros" desordenado de diferente manera. ¿Por qué cuando creo las posiciones del array "numerosDesordenados" con la función de desordenar el array "numeros" siempre me crea el mismo desorden? Os muestro código y el resultado:

Código (javascript) [Seleccionar]
function desordenar(array){
 array = array.sort(function() {return Math.random() - 0.5});
 return array;
} // esta función me desordena un array

var numeros= ["1", "2", "3", "4", "5"]; //este es mi array

numerosDesordenados= []; // array vacio

for (i=0;i<3;i++){ //creo bucle para llenar array vacío
 numerosDesordenados[i] = desordenar(numeros);
}


Si hago un console.log(numeros) me muestra en consola ["1, "2", "3", "4", "5"]. Bien...Si hago un console.log(numerosDesordenados) me muestra un array con tres posiciones siempre con la misma mezcla, por ejemplo:

Código (javascript) [Seleccionar]
[0] = ["2","3","1","5","4"]

[1] = ["2","3","1","5","4"]

[3] = ["2","3","1","5","4"]



Yo quiero que las tres posiciones sean diferentes. Como lo puedo hacer?? Muchas gracias!!

Eleкtro

#1
Cita de: masterkein en 12 Mayo 2018, 18:28 PM
desordenar array con bucle
(...)
Como lo puedo hacer??

Seriamente, ¿cuantas veces crees que se ha podido formular esa misma pregunta en Internet, cien, mil, cien mil veces?, yo diria que más. Al menos podrías buscar en Google para descubrir cual es la forma óptima o aconsejable para desordenar un Array en javascript...


Saludos!








Serapis

Solo añadir que el bucle no precisa llegar a 0, cuando solo queda un elemento por ordenar resulta absurdo pedir que elija otro (si solo queda 1), al azar para que ocupe su puesto...

Recuerda que cada lenguaje tiene una forma de activar el generador aleatorio, mediante una semilla, si no, suelen repetirse las secuencias, lo  cual es más notorio, cuando se piden exactamente de cada vez las mismas cantidades de números aleatorios.
Generalmente elegir una semilla adecuada es algo complicado, pero salvo que haya un botón de 'destruir el mundo', basta con usar el timer (los segundos que han pasado desde la medianoche), incluso usar ese valor para elegir un primo de una lista. y con es eprimo 'moduar' ese valor del timer para usarlo como semilla...