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.

scripts