Zum Inhalt springen
DE

Zufallsgenerator

Bereich festlegen, Anzahl wählen und ziehen. Schalten Sie „ohne Wiederholung“ ein für eine Verlosung, bei der dieselbe Zahl nicht zweimal fallen darf.

Warum fast jeder Generator leicht unfair ist

Der übliche Weg, eine Zufallszahl in einen Bereich zu pressen, ist der Rest der Division: Man nehme ein Byte von 0 bis 255, teile durch 6, behalte den Rest, und fertig ist der Würfel. Das funktioniert, und ganz fair ist es nicht. Es gibt 256 mögliche Bytes und 6 Seiten, und 256 lässt sich nicht durch 6 teilen: Es geht 42-mal auf, 4 bleiben übrig. Diese vier Übrigen landen auf den Seiten 1 bis 4, also würfelt so ein Würfel 1, 2, 3 und 4 bei 43 von 256 Bytes und 5 und 6 nur bei 42. Das sind rund 2,4% zu oft für die niedrigen Seiten: bei zwanzig Würfen unsichtbar, bei zwanzigtausend vollkommen systematisch.

Die Lösung besteht darin, die Übrigen wegzuwerfen. Dieser Generator holt sich vom Browser eine 32-Bit-Zahl, und fällt sie in den oberen Rest, der nicht glatt aufgeht, wird sie verworfen und neu gezogen. Was bleibt, teilt exakt, also ist jeder Wert Ihres Bereichs gleich wahrscheinlich. Nicht beinahe, sondern exakt. Der Preis ist, dass eine Ziehung gelegentlich zwei Versuche statt einem braucht, was niemand bemerkt und was die gesamten Kosten der Fairness sind.

Die Zahlen stammen aus crypto.getRandomValues, der kryptografischen Quelle des Browsers, und nicht aus Math.random. Math.random ist schnell und taugt zum Mischen einer Hintergrundanimation, aber es ist ein vorhersagbarer Algorithmus: Mit genug Ausgaben lässt sich die nächste berechnen. Für die Frage, wer abspült, ist das belanglos. Für die Ziehung eines Preises ist es der Unterschied zwischen einer Verlosung und einer Formalität.

Was diese Seite nicht behauptet: dass die Ziehung nachprüfbar wäre. Ist sie nicht, und kein Browser-Generator ist es: Das Ergebnis entsteht auf Ihrem eigenen Rechner und beweist niemandem etwas, der nicht auf Ihren Bildschirm geschaut hat. Für ein Klassenzimmer, ein Spiel oder eine Entscheidung unter Freunden genügt das vollkommen. Für eine Ziehung mit Geld oder rechtlicher Bindung braucht es ein Verfahren mit Zeugen, keine Webseite.

Häufige Fragen

Sind die Zahlen wirklich zufällig?

Sie stammen aus crypto.getRandomValues, das der Browser mit Entropie des Betriebssystems speist: Mauszeiten, Hardware-Rauschen und Ähnliches. Das ist dieselbe Quelle, aus der kryptografische Schlüssel entstehen. Es ist keine mathematische Formel, deren nächste Ausgabe sich aus den vorherigen ableiten lässt. Genau das ist Math.random nämlich.

Was bewirkt „ohne Wiederholung“?

Jede Zahl wird höchstens einmal gezogen, wie Lose aus einem Hut, die nicht zurückgelegt werden. Sechs Zahlen von 1 bis 60 kommen alle verschieden heraus. Fordern Sie mehr Zahlen an, als der Bereich enthält (etwa sechs verschiedene zwischen 1 und 5), verweigert das Werkzeug die Antwort, statt Ihnen stillschweigend fünf zu geben.

Kann dieselbe Zahl zweimal kommen?

Ja, sofern Sie nicht „ohne Wiederholung“ ankreuzen. Unabhängige Ziehungen aus demselben Bereich wiederholen sich häufiger als erwartet: Ziehen Sie zwei Zahlen von 1 bis 10, stimmen sie etwa jedes zehnte Mal überein. Das ist kein Fehler, sondern die Bedeutung von Unabhängigkeit.

Reicht das für ein Gewinnspiel oder eine Verlosung?

Die Zahlen selbst sind so fair, wie sie sich machen lassen. Was eine Webseite nicht liefern kann, ist ein Beweis für andere: Die Ziehung läuft auf Ihrem Rechner und hinterlässt nichts, was jemand anders prüfen könnte. Für ein zwangloses Gewinnspiel ist das in Ordnung. Wo das Ergebnis bestritten werden kann oder rechtlich bindet, ziehen Sie mit Zeugen oder über einen Dienst, der auf Nachprüfbarkeit gebaut ist.

Wie viele Zahlen kann ich auf einmal ziehen?

Bis zu 1.000. Die Grenze richtet sich danach, was auf einen Bildschirm passt und lesbar bleibt, nicht nach dem Generator. Eine Million zu ziehen wäre genauso schnell und vollkommen unbrauchbar anzusehen.

Weitere Werkzeuge