2010-11-23 11 views

Respuesta

13

Math.random() generará un número entre 0 y 1.

var key = Math.floor(Math.random() * arr.length); 
+9

@ La declaración de DenisGorbachev es incorrecta. Math.random() devuelve 0 inclusive a 1 exclusivo, lo que significa nunca 1.00. Si lo hiciera, el índice devuelto sería mayor que la longitud de la matriz. – Kelly

+0

Omg, tienes razón. –

-16

Sólo utilizando la longitud de la matriz hará que se seleccione en realidad nunca el último elemento en la matriz, excepto en la situación extremadamente rara cuando el número aleatorio seleccionado es 1.0000. Es mejor agregar .99999 a arr.length:

var key = Math.floor(Math.random() * (arr.length + .999999)) 
+4

Esto tiene el potencial de devolver un número mayor que el último índice. – Kelly

+0

Math.random() Proporciona un número entre 0 y 1 (NUNCA 1). Escrito como [0, 1). Además, si se agrega 0,9999999 a la longitud de la matriz, se produce un posible error fuera de límites. Mira la respuesta elegida –

Cuestiones relacionadas