2010-02-01 5 views
46

für meine Selentests brauche ich einen Wertanbieter, um in jedem Fall eine 5-stellige Nummer zu bekommen. Das Problem mit Javascript ist, dass die API von Math.random nur die Generierung eines 0. Startschwimmers unterstützt. Also muss es zwischen 10000 und 99999 sein.JavaScript-Ausdruck zum Generieren einer 5-stelligen Zahl in jedem Fall

So wäre es einfach, wenn es nur generiert 0.10000 und höher, aber es erzeugt auch 0.01000. So dass dieser Ansatz nicht gelingt:

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

Ist es möglich, eine 5-stellige Zahl in jedem Fall zu erzeugen (in einem Ausdruck!)?

Antwort

111

Was:

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

Hinzufügen der 10000 am Ende tut nichts. –

+0

Überprüfen Sie es erneut, @BenBrown. Ohne die 10000 können Sie Nummern mit weniger als 5 Ziffern haben. –

+0

Ahhhh, guter Scheck. Meine schlechte @Rubens Farias –

40

Ja, können Sie Zufallszahlen in einem bestimmten Bereich erstellen:

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

oder vereinfacht:

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

, wenn Sie ein generieren möchten sagen Postleitzahl, und keine führenden Nullen, solange es 5 Ziffern ist, die Sie verwenden können:

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

Ich bin gespannt, wie die Leistung dieser mit den anderen Methoden vergleichen würde. Dieser appelliert an mich, aber es scheint, dass die String-Konvertierung und dann Teilstring teuer sein könnte. – Danation

+0

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

+0

Mmm, 'Math.random()' gibt nicht garantiert, dass mindestens N Ziffern zurückgegeben werden. Ich habe es gerade mit Firefox versucht, '(" + Math.random()). Substring (2,7) 'kann XYZ oder XYWZ zurückgeben, was 3/4 Ziffern ist. –

0

Sie können eine zufällige ganze Zahl einschließlich eines beliebigen Min- und Max-Nummern erhalten die folgende Funktion:

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

Weitere Beispiele und andere Anwendungsfälle, die Math.random MDN documentation Kasse.

Verwandte Themen