Extraer un valor al azar de una lista
Problema:
Quiero sacar un elemento al azar de una lista
Supon que tienes una lista de nombres y quieres obtener un al azar para hacer algo con él? Es fácil usando un pco de lo que sabes de arrays y del método random.
Por ejemplo tienes a 'Juan', 'Luisa', 'Maria', Pedro', 'Alberto' y alguien tiene que hacer la compra, esta función te permitiré extraer un nombre al azar.
Solución
Partimos de una lista, su longitud y Math.random
La solución es utilizar el método random de Math que te da un valor entre 0 y 1, pero para que te de un resultado que va desde 0 hasta la longitud de la lista menos 1. Si la lista tiene 5 elementos necesitas un número aleatorio entre 0 y 4 (4 es el mýor índice del array).
Ejemplo
function nombre(lista){
let rnd = Math.random();
let item = Math.floor(rnd*(lista.length)) ;
return lista[item];
}
let amigos = new Array( 'Juan', 'Luisa', 'Maria', 'Pedro', 'Alberto') ;
console.log( nombre(amigos);
Si llamas a la función nombre(amigos) te dará el nombre elegido al azar
El random( ) va de 0 a 1 (sin llegar a 1). Al multiplicarlo por el últiomo indice de la lista (longitud de la lista menos 1) tendremos un valor entre 0 y 4.9999. Ahora basta sacar el redondeo por abjo (floor) y tendreos un valor entre 0 y 4.