Tengo el siguiente array:
var array = [1,2,3,4,5,6,7,8,9,10] ;
Si deseo obtener los elementos al azar, ¿como puedo hacerlo eficientemente?
Recibe ayuda de expertos
Es gratis y fácil
Respuestas, votos y comentarios
Recibe puntos, vota y da la solución
Tengo el siguiente array:
var array = [1,2,3,4,5,6,7,8,9,10] ;
Si deseo obtener los elementos al azar, ¿como puedo hacerlo eficientemente?
Una forma sencilla de realizar esto puede ser:
var array = [1,2,3,4,5,6,7,8,9,10] ;
var longitud = array.length;
var index= Math.floor(Math.random() * longitud);
alert(array[index]); //Mostramos el elemento aleatorio
Espero te haya servido.
Saludos
Lo mejor que he visto por ahí para este caso, es utilizar el metodo Fisher-Yates que seria algo como:
function shuffle(array) {
var m = array.length, t, i;
// While there remain elements to shuffle…
while (m) {
// Pick a remaining element…
i = Math.floor(Math.random() * m--);
// And swap it with the current element.
t = array[m];
array[m] = array[i];
array[i] = t;
}
return array;
}
Aquí es de donde lo saque, viene una explicación mucho mas detallada que puede aclarar dudas.