Das Generieren von Zufallszahlen in JavaScript ist nicht ganz so einfach und komfortabel wie in PHP. In PHP lassen sich Zufallszahlen relativ einfach mit der Funktion rand ( int $min , int $max ) erzeugen. Die Funktion kann zusätzlich mit zwei optinalen Parametern ausgestattet werden:
- Mindestgröße der Zufallszahl
- Maximalgröße der Zufallszahl
So könnte ein Funktionsaufruf in PHP zum Beispiel wie folgt aussehen:
< ?php // Gibt eine Zufallszahl zwischen 0 bis 32768 zurück echo( rand() ); // Gibt eine Zufallszahl zwischen 10 bis 30 zurück echo( rand( 10, 30 ) ); ?> |
Wenn wir das ganze nun auf JavaScript übertragen möchten, ist es nicht mehr ganz so simpel, zumindest wenn man sich an die Struktur von PHP gewöhnt hat. Die Funktion zum generieren von Zufallszahlen in JavaScript ist: Math.random() – Dabei wird eine Zufallszahl zwischen 0 – 1 generiert ( z.B. 0.14578 ).
Ein Beipsiel dazu würde so aussehen:
<script type="text/javascript"> // Schreibt eine Zufallszahl zwischen 0 und 1 in das Dokument document.write(Math.random() + "<br />"); // Speichert eine Zufallszahl zwischen 0 und 1 in der Variable randNumber randNumber = Math.random(); </script> |
In der Regel werden in Scripten allerdings Ganzzahlen (engl. Integer) benötigt, dass bedeutet wir müssen die JavaScript Math.random() Funktion modifizieren um dies zu erreichen. Um eine Zufallszahl von 0 – X zu generieren ist der Rechenschritt relativ einfach. Wenn wir zum Beispiel eine Zufallszahl zwischen 0 – 10 generieren möchten multiplizieren wir einfach den Math.random() Wert mit 11 (bei 0 – 20 multiplizieren wir mit 21 usw.) und runden das Ergebnis ab – Das sieht dann als ganzes Script zum Beispiel so aus:
<script type="text/javascript"> // Math.floor() - Liefert die nächstniedrigere Ganzzahl des Parameters zurück (Abrundung). // Speichert eine Zufallszahl zwischen 0 und 10 in der Variable randNumber randNumber = Math.floor( Math.random()*11 ); </script> |
Mit dem oben gezeigten Script sollte den meisten bereits geholfen sein, wer eine komplette Adaption von JavaScript Zufallszahlen zur PHP rand() Funktion benötigt, muss die Rechnung weiter ausbauen. Folgend ist eine JavaScript Funktion zu finden, die es ermöglicht eine rand() Funktion in JavaScript auszuführen, die genau so funktioniert wie die PHP rand() Funktion:
<script type="text/javascript"> function rand (min, max) { var args = arguments.length; if (args === 0) { min = 0; max = 32768; } return Math.floor( Math.random() * (max - min + 1) ) + min; } // die alert Ausgabe liefert nun einen Zufallswert zwischen 10 und 30 alert( rand( 10, 30 ) ); </script> |
Mit dieser einfachen Funktion haben wir nun eine genaue Kopie der Funktionsweise der PHP rand() Funktion und können Sie auch genau so benutzen.
Schlagworte zu diesem Artikel: JavaScript, PHP, Script, Tutorial
Vielen Dank für dieses gute Beispiel! Das Maximum der Standard-Zufallszahl sollte jedoch eins kleiner gemacht werden (auf 32767), denn auf manchen Plattformen (z.B. Windows) ist getrandmax() nur 32767, siehe: http://de3.php.net/manual/en/function.rand.php