2010-02-01 31 views
46

para mis pruebas de selenio Necesito un proveedor de valor para obtener un número de 5 dígitos en todos los casos. El problema con javascript es que la API de Math.random solo admite la generación de un float de inicio 0.. Por lo tanto, debe estar entre 10000 y 99999.expresión de JavaScript para generar un número de 5 dígitos en cada caso

Por lo que sería fácil si solo generara 0.10000 y superior, pero también genera 0.01000. Por lo que este enfoque no tuviera éxito:

Math.floor(Math.random()*100000+1) 

¿Es posible generar un número de 5 dígitos en todos los casos (en una expresión!)?

Respuesta

111

¿Qué hay de:

Math.floor(Math.random()*90000) + 10000; 
+0

Agregar el 10000 al final no hace nada. –

+0

Compruébalo de nuevo, @BenBrown. Sin el 10000 puede tener números con menos de 5 dígitos. –

+0

Ahhhh, buen cheque. Mi malo @Rubens Farias –

40

Sí, puede crear números aleatorios en cualquier intervalo dado:

var min = 10000; 
var max = 99999; 
var num = Math.floor(Math.random() * (max - min + 1)) + min; 

O simplificada:

var num = Math.floor(Math.random() * 90000) + 10000; 
15

si desea generar decir una código postal, y no le importa los ceros a la izquierda, siempre y cuando sean 5 dígitos que puede usar:

(""+Math.random()).substring(2,7) 
+0

Tengo curiosidad de cómo el rendimiento de esto se compararía con los otros métodos. Esto me atrae, pero parece que la conversión de cadenas y la subserie podrían ser costosas. – Danation

+0

Bueno, [aquí] (http://jsperf.com/5-digit-generator). – rgin

+0

Mmm, 'Math.random()' no garantiza devolver al menos N dígitos. Lo intenté con Firefox, '(" "+ Math.random()). Substring (2,7)' puede devolver XYZ o XYWZ que tiene 3/4 dígitos. –

0

Puede obtener un entero aleatorio incluido de cualquier números max utilizando la siguiente función min y dado:

function getRandomIntInclusive(min, max) { 
    min = Math.ceil(min); 
    max = Math.floor(max); 
    return Math.floor(Math.random() * (max - min + 1)) + min; 
} 

Para más ejemplos y otros casos de uso, de partida de los Math.random MDN documentation.

Cuestiones relacionadas