2010-02-01 32 views
46

per i miei test di selenio Ho bisogno di un fornitore di valori per ottenere un numero a 5 cifre in ogni caso. Il problema con javascript è che l'API di Math.random supporta solo la generazione di un float iniziale 0.. Quindi deve essere compreso tra 10000 e 99999.Espressione JavaScript per generare un numero a 5 cifre in ogni caso

Quindi sarebbe facile se generasse solo 0.10000 e superiore, ma genera anche 0.01000. Quindi, questo approccio non riesce:

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

E 'possibile generare un numero a 5 cifre in tutti i casi (in un'espressione!)?

risposta

111

Che dire:

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

L'aggiunta del 10000 alla fine non fa nulla. –

+0

Controlla di nuovo, @BenBrown. Senza il 10000 puoi avere numeri con meno di 5 cifre. –

+0

Ahhhh, buon controllo. Il mio cattivo @Rubens Farias –

40

Sì, è possibile creare numeri casuali in un dato intervallo:

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

O semplificata:

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

se si desidera generare dire una codice di avviamento postale, e non importa gli zeri iniziali finché si tratta di 5 cifre che è possibile utilizzare:

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

Sono curioso di sapere come le prestazioni di questo sarebbero paragonabili agli altri metodi. Questo mi piace, ma sembra che la conversione delle stringhe e la sottostringa potrebbero essere costose. – Danation

+0

Bene, [qui] (http://jsperf.com/5-digit-generator). – rgin

+0

Mmm, 'Math.random()' non è garantito il ritorno di almeno N cifre. Ho appena provato con firefox, '(" "+ Math.random()). Substring (2,7)' può restituire XYZ o XYWZ che è 3/4 cifre. –

0

È possibile ottenere un numero intero casuale comprensivi di un dato min e max numeri utilizzando la seguente funzione:

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

Per ulteriori esempi e altri casi d'uso, checkout il Math.random MDN documentation.