naden.de Bookmarken

Zufallszahlen in Javascript mit Math.random()

01. September 2006 | In: Javascript

Auch bei der Programmierung mit Javascript braucht man ab und an Zufallszahlen aus einem definierten Raum. Die Methode Math.random(); liefert aber leider nur Zahlen im Bereich von 0 bis 1.
Abhilfe schafft das folgende kurze Script:

function GetRandom( min, max ) {
	if( min > max ) {
		return( -1 );
	}
	if( min == max ) {
		return( min );
	}
 
        return( min + parseInt( Math.random() * ( max-min+1 ) ) );
}

Der Aufruf erfolgt mit GetRandom( 0, 3 ); und liefert eine zufällig Zahl zwischen 0 und 3.

Update 23.05.2007:
Habe die Funktion überarbeitet, es hatte sich ein kleiner Fehler eingeschlichen. Danke für den Hinweis.
Update 01.09.2008:
Funktion überarbeitet um eine bessere Verteilung der Zufallszahlen zu erreichen. Danke an @batzee für den Hinweis und @ralf für die Ausführungen dazu.

Bewertung: najagut
Loading ... Loading ...

Ähnliche Beiträge



6 Kommentare zu Zufallszahlen in Javascript mit Math.random()

Avatar

batzee

09. März 2008 um 21:06:52

So wie du es machst, ist die Verteilung der Zufallszahlen nicht gleichmäßig. Mein Vorschlag:

function GetRandom( min, max ) {
if( min > max ) {
return( -1 );
}
if( min == max ) {
return( min );
}
return min + parseInt( Math.random() * ( max-min+1 )
}

Avatar

naden

10. März 2008 um 09:42:51

Habe dein Beipiel mal freigeschaltet. Erklär doch mal kurz, warum die Verteilung in deinem Beispiel besser funktioniert.

Avatar

Ralf Engels

31. August 2008 um 02:36:32

Mein Vorredner hat recht.
Folgendes Beispiel:
GetRandom(1,2)
Damit wir in Zeile 9 gleichverteilt entweder 0, 1 oder 2 erzeugt.
Zeile 11 erzeugt daraus
r=0: return 1;
r=1: return 2;
r=2: return 2;

Der Code von Batzee ist der normale Weg um so etwas zu programmieren.

Avatar

admin

01. September 2008 um 16:05:30

@ralf, macht Sinn, ich habe den Code mal geändert.

Avatar

Sirion

21. Oktober 2008 um 17:11:03

da fehlt ne klammer am ende… letzte zeile entweder die von parseInt oder von return

Avatar

naden

23. Oktober 2008 um 23:43:17

@sirion, diese Flüchtigkeitsfehler …

Schreib einen Kommentar

Fülle das Kommentar-Formular vollständig aus oder melde dich über Twitter oder Facebook an.
Sign in with Facebook

By Teledir Internetanbieter