So funktioniert Math.random()
Math.random() ist eine der am häufigsten verwendeten Methoden in JavaScript, wenn es um die Erzeugung zufälliger Werte geht. Sie ist einfach zu verwenden und eröffnet Möglichkeiten für alles von kleinen interaktiven Funktionen bis hin zu fortgeschrittenen Spielen und Simulationen.

Was ist Math.random() und wie funktioniert es?
Math.random() ist eine eingebaute Methode in JavaScript, die eine Fließkommazahl zwischen 0 (einschließlich) und 1 (ausschließlich) zurückgibt. Das bedeutet, dass der Wert immer größer oder gleich 0 ist, aber niemals genau 1 erreicht. Das macht die Methode ideal als Grundlage, um verschiedene Arten von Zufälligkeit zu erzeugen.
Im Hintergrund wird ein Pseudozufallszahlengenerator (PRNG) verwendet. Das bedeutet, dass die Zahlen im mathematischen Sinn nicht wirklich zufällig sind, sondern durch Algorithmen berechnet werden. Für die meisten praktischen Anwendungen — etwa Spiele, Lotterien oder zufällige Farben — ist Math.random() gut genug. Für fortgeschrittene Kryptografie oder Sicherheitszwecke ist es jedoch nicht stark genug.
Beispiele für die Verwendung von Math.random()
Ein einfaches Beispiel ist das Erzeugen einer Zufallszahl zwischen 0 und 9. Das geschieht, indem man das Ergebnis von Math.random() mit 10 multipliziert und abrundet:
const number = Math.floor(Math.random() * 10)
Auf die gleiche Weise kannst du den Bereich anpassen, indem du mit anderen Zahlen multiplizierst und einen Offset addierst. Wenn du beispielsweise eine Zahl zwischen 5 und 15 möchtest, kannst du schreiben:
const number = Math.floor(Math.random() * 11) + 5
Nach demselben Prinzip kannst du alles von Ganzzahlen bis zu Dezimalzahlen zufällig erzeugen, zufällige Elemente aus einem Array auswählen oder Variation bei Farben, Positionen und Bewegungen in einer Webanwendung schaffen.
Mit einer Hilfsfunktion vereinfachen
Um den Code sauberer und besser wiederverwendbar zu machen, kannst du in JavaScript eine Funktion erstellen, die ein Array mit Werten annimmt und einen davon zufällig zurückgibt.
const random = (array) => array[Math.floor(Math.random() * array.length)]
Diese Funktion wird auf Der Zufallsgenerator unter anderem verwendet, um Ja oder Nein zu erzeugen, kann aber genauso gut für beliebige andere Werte genutzt werden.
const result = random(['Ja', 'Nein'])
result wird zur Laufzeit entweder Ja oder Nein sein und kann dem Benutzer auf beliebige Weise präsentiert werden.
Häufige Einsatzbereiche für Math.random()
Math.random() wird oft in kleineren Projekten verwendet, die Variation benötigen. Ein typisches Beispiel ist das Erzeugen zufälliger Hintergrundfarben oder das zufällige Auswählen eines Zitats aus einer Liste.
In der Spieleentwicklung wird die Methode verwendet, um Dinge wie Startpositionen, Hindernisse, Loot oder zufällige Ereignisse zu erzeugen. In Simulationen kann sie genutzt werden, um Unsicherheit oder natürliche Variation nachzubilden. Die Methode ist auch nützlich für die Erstellung von Testdaten, wenn du bei jedem Programmlauf unterschiedliche Werte möchtest.
Wichtig ist jedoch, dass die Zufälligkeit nicht "echt" ist. Da die Werte auf einem Algorithmus basieren, können sie vorhergesagt werden, wenn der Zustand des Generators bekannt ist. Für Spiele und einfachere Anwendungen spielt das keine große Rolle, bei sicherheitskritischen Funktionen solltest du stattdessen Methoden verwenden, die auf kryptografischer Zufälligkeit basieren.
Vorteile und Grenzen von Math.random()
Einer der großen Vorteile von Math.random() ist seine Einfachheit — ein einziger Funktionsaufruf liefert einen neuen Zufallswert. Außerdem ist die Methode Standard in JavaScript und funktioniert in allen modernen Browsern ohne zusätzliche Bibliotheken.
Eine Einschränkung ist jedoch, dass sie nicht für Situationen geeignet ist, in denen wirklich zufällige Zahlen erforderlich sind. Für sicherheitskritische Zwecke, etwa beim Generieren von Passwörtern oder Schlüsseln, wird stattdessen das eingebaute Web Crypto API empfohlen (z. B. crypto.getRandomValues()).
Für die allermeisten Anwendungsfälle ist Math.random() dennoch mehr als ausreichend. Die Methode gibt Entwicklern eine schnelle und flexible Möglichkeit, Variation und Unvorhersehbarkeit in ihre Programme zu bringen. Richtig eingesetzt kann sie zu allem beitragen, von kleinen, spielerischen Features bis hin zu komplexen Simulationen in JavaScript.
Wie Der Zufallsgenerator von Math.random() auf crypto.getRandomValues() umgestiegen ist
Der Zufallsgenerator wurde ursprünglich mit Math.random() aufgebaut, um alle Generatoren zu betreiben. Obwohl das für den Alltag gut funktioniert, ist es nicht kryptografisch sicher — die Werte könnten theoretisch vorhergesagt werden, wenn der interne Zustand des Pseudozufallszahlengenerators bekannt ist.
Wir haben seitdem die gesamte Zufallszahlengenerierung auf Der Zufallsgenerator auf crypto.getRandomValues() aus dem Web Crypto API umgestellt. Diese Methode nutzt Entropie aus dem Betriebssystem und ist deutlich schwerer vorherzusagen. Lies mehr darüber, wie crypto.getRandomValues() funktioniert.
Lies mehr über die Methode auf Mozillas Website MDN.
Übersetzungen
- Dansk: Sådan virker Math.random()
- Deutsch: So funktioniert Math.random()
- English: How Math.random() Works
- Suomi: Näin Math.random() toimii
- Svenska: Så fungerar Math.random()