Start · Sprachen · JavaScript · Referenz · Math.random()

Math.random()

Methode

Die statische Methode <code>Math.random()</code> liefert eine Pseudo-Zufallszahl im Bereich von 0 (inklusive) bis 1 (exklusive).

Kategorie: method-property

Signatur

Math.random()

Beschreibung

Die statische Methode Math.random() gibt eine Gleitkomma-Pseudozufallszahl zurück, die größer oder gleich 0 und kleiner als 1 ist, mit annähernd gleichmäßiger Verteilung über diesen Bereich — die Sie dann auf Ihren gewünschten Bereich skalieren können. Die Implementierung wählt den initialen Seed für den Zufallszahlengenerator; er kann vom Benutzer nicht gewählt oder zurückgesetzt werden.

Rückgabewert

Typ
number
Beschreibung
Eine Gleitkomma-Pseudozufallszahl zwischen 0 (inklusive) und 1 (exklusive).

Beispiele

Eine Zufallszahl zwischen 0 (inklusive) und 1 (exklusive)

function getRandom() {
  return Math.random();
}

Eine Zufallszahl zwischen zwei Werten

function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}

Eine ganze Zufallszahl zwischen zwei Werten

function getRandomInt(min, max) {
  const minCeiled = Math.ceil(min);
  const maxFloored = Math.floor(max);
  return Math.floor(Math.random() * (maxFloored - minCeiled) + minCeiled); // Das Maximum ist exklusiv und das Minimum inklusiv
}

Eine ganze Zufallszahl zwischen zwei Werten, inklusiv

function getRandomIntInclusive(min, max) {
  const minCeiled = Math.ceil(min);
  const maxFloored = Math.floor(max);
  return Math.floor(Math.random() * (maxFloored - minCeiled + 1) + minCeiled); // Das Maximum ist inklusiv und das Minimum ist inklusiv
}

// Wichtig · Fallstricke

Hinweis: Math.random() liefert keine kryptografisch sicheren Zufallszahlen. Verwenden Sie sie nicht für sicherheitsrelevante Zwecke. Nutzen Sie stattdessen die Web Crypto API und genauer die Methode Crypto.getRandomValues().

Beachten Sie, dass Zahlen in JavaScript IEEE-754-Gleitkommazahlen mit Round-to-nearest-even-Verhalten sind, weshalb die für die folgenden Funktionen angegebenen Bereiche (mit Ausnahme von Math.random() selbst) nicht exakt sind. Üblicherweise ist die angegebene obere Grenze nicht erreichbar, aber wenn Math.random() eine Zahl sehr nahe an 1 liefert, ist die winzige Differenz beim gewünschten Maximum möglicherweise nicht darstellbar, wodurch die obere Grenze doch erreicht wird.

Hinweis: Es mag verlockend sein, Math.round() zu verwenden, doch dies würde dazu führen, dass die Zufallszahlen einer ungleichmäßigen Verteilung folgen, was für Ihre Zwecke möglicherweise nicht akzeptabel ist.