Zufallszahlengenerator (kryptografisch sicher, Eindeutigkeitsmodus)
Wähle Minimum, Maximum und Anzahl, um kryptografisch sichere zufällige ganze Zahlen zu generieren. ‚Eindeutig' aktivieren für Stichproben ohne Zurücklegen (Gewinnspiele, Lotterien).
Wie es funktioniert
Warum das wirklich zufällig ist
Wir verwenden crypto.getRandomValues – die kryptografisch sichere Zufallsquelle des Browsers – statt Math.random(). Die CSPRNG-Ausgabe kann nicht aus vorherigen Werten vorhergesagt werden, was bei Lotterieziehungen, glücksspielnahen Anwendungen und jedem Verwendungszweck wichtig ist, bei dem ‚zufällig' eine echte Anforderung ist, nicht nur ‚beliebig'.
Wir verwenden auch Rejection Sampling, um die Verteilung über den gewählten Bereich exakt gleichmäßig zu machen. Naives ‚Zufall % Bereich' führt zu Verzerrung, wenn der Bereich 2³² nicht gleichmäßig teilt. Rejection Sampling verwirft Werte, die Verzerrung verursachen würden, und versucht es erneut, sodass jede Zahl in deinem Bereich exakt dieselbe Wahrscheinlichkeit hat.
Eindeutig vs. Duplikate erlaubt
Standardmodus: jede Zahl ist unabhängig – Duplikate können auftreten. Das ist was ‚zufällig' im alltäglichen Gebrauch bedeutet (Würfeln, Film auswählen, randomisiertes Testen).
Eindeutig-Modus: Stichprobe ohne Zurücklegen – sobald eine Zahl gewählt ist, kann sie in derselben Runde nicht erneut gewählt werden. Nützlich für: Lotterie (z. B. 6 Zahlen aus 1–49), Gewinnspiele (Gewinner ziehen), Teamzuweisungen und jede ‚Wähle N aus M'-Situation. Erfordert Anzahl ≤ Bereich.
Häufige Anwendungsfälle
Lotterie / Gewinnspiel: 6 eindeutige Zahlen aus 1–49, oder was deine Ziehung verwendet. ‚Eindeutig' aktivieren.
Würfelwürfe: Bereich 1–6 (oder 1–20 für W20). ‚Eindeutig' deaktiviert lassen, sodass jeder Wurf unabhängig ist.
Zufallsstichproben zum Testen: 10 zufällige Benutzer-IDs aus 1–10.000 für Stichprobenprüfungen. ‚Eindeutig' verwenden, um Duplikate zu vermeiden.
Münzwurf simulieren: Bereich 0–1, mehrere Ergebnisse. Kopf/Zahl für Fairness-Prüfungen auszählen (bei großen Stichproben ~50/50).
Häufige Fragen
›Ist das fair für Gewinnspiele oder Lotterien?
Die Zufälligkeit ist kryptografisch sicher und unverzerrt. Ob es für eine offizielle Lotterie rechtlich ‚fair' ist, hängt von den Regeln deiner Jurisdiktion ab – viele verlangen zertifizierte Hardware-RNGs.
›Was ist der Unterschied zu Math.random()?
Math.random() verwendet einen Algorithmus, dessen Ausgabe von einem Angreifer aus vorherigen Ausgaben vorhergesagt werden kann. crypto.getRandomValues verwendet einen OS-Level-kryptografischen RNG, der nicht vorhergesagt werden kann. Für echte Fairness dieses verwenden.
›Kann ich negative Zahlen erhalten?
Ja. Minimum auf einen negativen Wert setzen.
›Was ist der maximale Bereich?
Begrenzt durch JavaScripts sicheren ganzzahligen Bereich (~2⁵³), aber praktisch kannst du ohne Probleme in den Milliardenbereich gehen. Das Rejection-Sampling verarbeitet jeden Bereich korrekt.
›Warum schlägt ‚Eindeutig' fehl, wenn Anzahl > Bereich?
Wenn du 10 eindeutige Zahlen aus 1–5 wählst, gibt es vier nicht. Die Validierung erkennt das und bittet dich, den Bereich zu erweitern oder die Anzahl zu reduzieren.
›Funktioniert das für Würfelwürfe?
Ja – Bereich auf 1–6 (oder welche Würfel du auch hast) setzen und ‚Eindeutig' deaktivieren, damit jeder Wurf unabhängig ist.
›Kann ich den Seed speichern und reproduzieren?
Nein – sicheres Zufällig ist designbedingt ohne Seed. Wenn du reproduzierbare ‚Zufälligkeiten' zum Testen benötigst, eine seeded PRNG-Bibliothek verwenden.
›Werden die Daten irgendwohin gesendet?
Nein. Die Generierung ist vollständig lokal.
Verwandte Tools
Zuletzt aktualisiert: