> zufallszahlengenerator <
// Erzeugen Sie kryptografisch zufällige Ganzzahlen und Dezimalzahlen — oder verwenden Sie einen Seed für reproduzierbare Durchläufe
Kryptografische Zufälligkeit
Standardmäßig wird crypto.getRandomValues() mit Rejection Sampling verwendet, sodass jede Ganzzahl in Ihrem Bereich gleich wahrscheinlich ist — ohne Modulo-Bias.
Reproduzierbarer Seed-Modus
Geben Sie eine beliebige Seed-Zeichenkette ein, um zu einem deterministischen mulberry32-PRNG zu wechseln. Gleicher Seed, gleiche Zahlen — perfekt für Tests und Simulationen.
Modus ohne Duplikate
Erzeugen Sie eindeutige Ganzzahlen mittels Sampling im Fisher-Yates-Stil. Ideal für Lotterieziehungen, Verlosungen oder Stichproben ohne Zurücklegen.
Steuerung der Dezimalpräzision
Wechseln Sie in den Dezimalmodus und wählen Sie 1–10 Stellen. Die Zahlen sind gleichmäßig über [min, max) verteilt und auf die gewählte Präzision gerundet.
// ÜBER DIE ERZEUGUNG VON ZUFALLSZAHLEN
So funktioniert es:
Wenn das Seed-Feld leer ist, ruft dieses Tool crypto.getRandomValues(new Uint32Array(1)) auf, einen CSPRNG (kryptografisch sicherer PRNG), der vom Entropie-Pool Ihres Betriebssystems gespeist wird. Um eine 32-Bit-Ganzzahl ohne Vorzeichen ohne Modulo-Bias auf einen beliebigen [min, max]-Bereich abzubilden, verwendet der Generator Rejection Sampling: Jeder Wert oberhalb des größten Vielfachen des Bereichs, das in 2^32 passt, wird verworfen und neu gezogen. Wenn Sie einen Seed angeben, wird die Zeichenkette mit cyrb53 zu einer 32-Bit-Ganzzahl gehasht und in mulberry32 eingespeist, einen schnellen 32-Bit-PRNG mit einer Periode von 2^32 — deterministisch und reproduzierbar. Der Dezimalmodus skaliert eine gleichverteilte [0,1)-Stichprobe auf [min, max) und formatiert anschließend mit toFixed(places).
Beispiel:
min=1, max=100, count=5, seed="hello" -> 39, 98, 64, 12, 71 (immer)
Standards & Referenzen:
- >Web Crypto API (W3C) —
crypto.getRandomValues()-Vertrag für CSPRNGs - >RFC 4086 — Randomness Requirements for Security
- >mulberry32 — 32-Bit-PRNG von Tommy Ettinger, gemeinfrei
- >cyrb53 — schneller 53-Bit-String-Hash zum Seeden (bryc, gemeinfrei)
Häufige Anwendungsfälle:
- >Lotterie- und Verlosungsziehungen mit nachweislich eindeutigen Ziehungen
- >Zufallsstichproben ohne Zurücklegen für Umfragen und Audits
- >Monte-Carlo-Simulationen und statistische Experimente
- >A/B-Test-Bucketing mit reproduzierbaren Seed-Zuweisungen
- >Spielmechaniken: Würfelersatz, Loot-Tabellen, Level-Seeds
- >QA-Testdaten und Generierung von Fuzzing-Eingaben
- >Auswahl von Gewinnern, Juroren oder Erstvortragenden in Meetings
- >Generierung synthetischer Daten für Prototypen und Demos
Verwandte Tools:
- >UUID-Generator — zufällige v4-Bezeichner, wenn Sie eine eindeutige ID statt einer Zahl benötigen
- >Passwort-Generator — kryptografisch zufällige Zeichenketten mit Steuerung des Zeichenpools
- >BIP39-Generator — zufällige mnemonische Seed-Phrasen für Krypto-Wallets
- >randompickerwheel.app — Glücksrad-Oberfläche, wenn Sie eine visuelle Zufallsauswahl für ein Live-Publikum oder ein Klassenzimmer möchten
// BEISPIELAUSGABEN
Lotterieziehung — 6 eindeutige Zahlen aus 1-49
min=1, max=49, count=6, no-duplicates=on, sort=ascending
output:
7, 13, 22, 28, 35, 41
Würfelersatz — zehn W20-Würfe (Duplikate erlaubt)
min=1, max=20, count=10, no-duplicates=off, sort=none
output:
14, 3, 20, 11, 7, 14, 2, 19, 8, 11
Dezimalstichprobe — 5 Fließkommazahlen in [0, 1) mit 4 Nachkommastellen
type=decimal, min=0, max=1, count=5, places=4
output:
0.4172, 0.8635, 0.0291, 0.5508, 0.7723
Reproduzierbarer Seed — gleicher Seed ergibt gleiche Folge
min=1, max=100, count=5, seed="hello" (zweimal ausführen)
output:
Lauf 1: 39, 98, 64, 12, 71 / Lauf 2: 39, 98, 64, 12, 71
Bucketing — 100 gewichtete A/B-Ziehungen per Ganzzahl-Modulo
min=0, max=99, count=100, seed="experiment-42", sort=ascending
output:
0, 1, 3, 4, 7, 9, 12, ... 95, 97, 98, 99 (deterministisch)
// SELBST IMPLEMENTIEREN
Wenn Sie den Algorithmus lieber direkt in Ihr eigenes Projekt einbauen möchten, finden Sie hier die drei Bausteine, auf denen dieses Tool aufbaut. Gemeinsam decken sie unverzerrte kryptografische Ganzzahlen, deterministische geseedete Ströme und die Umwandlung eines beliebigen String-Seeds in einen 32-Bit-PRNG-Zustand ab. Alle gemeinfrei oder MIT-äquivalent.
Kryptografisch sichere Ganzzahl in [min, max] (kein Modulo-Bias)
function secureRandomInt(min, max) {
const range = max - min + 1;
const buf = new Uint32Array(1);
const max32 = 0xFFFFFFFF;
const limit = Math.floor((max32 + 1) / range) * range;
let v;
do {
crypto.getRandomValues(buf);
v = buf[0];
} while (v >= limit);
return min + (v % range);
}
mulberry32 — deterministischer geseedeter PRNG (32-Bit-Zustand, ~2^32 Periode)
function mulberry32(seed) {
let a = seed >>> 0;
return function () {
a = (a + 0x6D2B79F5) | 0;
let t = a;
t = Math.imul(t ^ (t >>> 15), t | 1);
t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
};
}
// usage: const rng = mulberry32(0xC0FFEE);
// rng(); // 0.6743..., reproducible across runs
cyrb53 — schneller String-zu-32Bit-Hash (zum Seeden von mulberry32)
function cyrb53(str, seed) {
seed = seed || 0;
let h1 = 0xdeadbeef ^ seed;
let h2 = 0x41c6ce57 ^ seed;
for (let i = 0; i < str.length; i++) {
const ch = str.charCodeAt(i);
h1 = Math.imul(h1 ^ ch, 2654435761);
h2 = Math.imul(h2 ^ ch, 1597334677);
}
h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^
Math.imul(h2 ^ (h2 >>> 13), 3266489909);
h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^
Math.imul(h1 ^ (h1 >>> 13), 3266489909);
return (h1 >>> 0);
}
// const rng = mulberry32(cyrb53('my-seed-string'));
// HÄUFIGE FALLSTRICKE
> Modulo-Bias
Naives Math.floor(Math.random() * range) verteilt die höherwertigen Bits ungleichmäßig, wenn der Bereich keine Zweierpotenz ist — manche Ausgaben treten etwas häufiger auf als andere. Verwenden Sie Rejection Sampling (das obige Snippet), um Werte außerhalb des Bereichs zu verwerfen und die Verteilung gleichmäßig zu halten.
> Math.random() ist nicht kryptografisch sicher
Math.random() verwendet in V8/Spidermonkey xorshift128+, das schnell, aber vorhersehbar ist: Ein Angreifer, der einige Ausgaben beobachtet, kann den internen Zustand rekonstruieren und künftige Werte vorhersagen. Für Tokens, Salts, fairnesskritische Lotterieziehungen oder alles, was für einen Angreifer relevant ist, verwenden Sie immer crypto.getRandomValues().
> Geseedete PRNGs sind deterministisch — niemals für Sicherheit verwenden
Mulberry32 und Verwandte sind darauf ausgelegt, sich zu wiederholen. Genau das möchten Sie für Tests, Simulationen und Bucketing — und genau das möchten Sie nicht für Token zum Zurücksetzen von Passwörtern oder Sitzungs-IDs. Wenn Sie einen Seed in etwas Benutzerseitiges oder Authentifizierungsnahes einspeisen, wechseln Sie sofort zurück zum CSPRNG.
> Duplikatabweisung bei hoher Anzahl erschöpft die Kapazität
Die Anforderung von k eindeutigen Ganzzahlen aus einem Bereich der Größe n, bei der k sich n nähert, wird zu einem Sammelbilderproblem: Die letzten Ziehungen werden exponentiell teuer. Dieses Tool begrenzt auf 10.000 und verwendet partielles Fisher-Yates-Sampling, sodass die Kapazität exakt ist, aber eine naive while-Schleife mit seen.has(x) hängt sich still auf, wenn k > n. Prüfen Sie die Kapazität immer vorab.
>> häufig gestellte fragen
F: Ist dieser Zufallszahlengenerator kryptografisch sicher?
A: Ja, standardmäßig. Wenn Sie das SEED-Feld leer lassen, verwendet das Tool crypto.getRandomValues(), den CSPRNG der Web Crypto API, der unter Linux/macOS aus /dev/urandom und unter Windows aus BCryptGenRandom liest. Außerdem wenden wir Rejection Sampling an, sodass die Abbildung von einer 32-Bit-Ganzzahl auf Ihren benutzerdefinierten Bereich unverzerrt ist. Die Ausgabe eignet sich für sicherheitsnahe Aufgaben wie das Erzeugen von Tokens, die Wahl von Salts oder das Durchführen fairer Lotterien. Beachten Sie, dass die Angabe eines Seeds zu einem deterministischen PRNG (mulberry32) wechselt, der nicht kryptografisch sicher ist — verwenden Sie ihn nur, wenn Reproduzierbarkeit wichtiger als Geheimhaltung ist.
F: Was ist der Unterschied zwischen Seed-Modus und Modus ohne Seed?
A: Der Modus ohne Seed (Standard) verwendet den CSPRNG Ihres Browsers und erzeugt bei jedem Klick frische, unvorhersehbare Zahlen — derselbe Aufruf liefert nie zweimal dieselbe Folge. Der Seed-Modus hasht die Seed-Zeichenkette mit cyrb53 zu einer 32-Bit-Ganzzahl und speist sie in mulberry32 ein, einen deterministischen PRNG. Identischer Seed plus identische Einstellungen ergeben immer dieselbe Folge, was für reproduzierbare Experimente, das Debuggen von stochastischem Code, das Teilen von Test-Fixtures oder A/B-Test-Bucketing, bei dem jeder Nutzer stets im selben Bucket landen muss, von unschätzbarem Wert ist.
F: Wie funktioniert die Option "keine Duplikate"?
A: Bei Ganzzahlen zieht "keine Duplikate" aus dem Bereich [min..max] mittels eines von Fisher-Yates inspirierten partiellen Mischens, das die ersten k Elemente liefert, ohne sich je zu wiederholen. Wir verwenden eine dünnbesetzte Tausch-Map, sodass der Speicherverbrauch O(count) statt O(range) bleibt, was bedeutet, dass eine Ziehung von 10 eindeutigen Zahlen aus 1 bis 1.000.000 genauso günstig ist wie 10 aus 1 bis 100. Wenn Sie mehr eindeutige Zahlen anfordern, als der Bereich liefern kann (z. B. 20 eindeutige Ganzzahlen in 1–10), meldet das Tool einen klaren Kapazitätsfehler, anstatt endlos zu schleifen.
F: Kann ich zufällige Dezimalzahlen (Fließkommazahlen) erzeugen?
A: Ja. Stellen Sie das TYP-Optionsfeld auf Dezimalzahl und wählen Sie eine Präzision zwischen 1 und 10 Stellen. Der Generator zieht eine gleichverteilte Fließkommazahl in [0, 1), skaliert sie auf [min, max), rundet dann mit toFixed(places) und wandelt sie zurück in eine Zahl. Beachten Sie, dass max im Dezimalmodus exklusiv ist (eine Nebenwirkung der Definition von Fließkomma-Gleichverteilung). Für die meisten statistischen Anwendungen reichen 4–6 Nachkommastellen völlig aus; zehn Stellen nähern sich der Grenze der IEEE-754-Doppelpräzision für typische kleine Bereiche.
F: Gibt es eine maximale Anzahl?
A: Die Anzahl ist auf 10.000 Zahlen pro Klick begrenzt. Das hält die Seite auf Telefonen reaktionsfähig und vermeidet Randfall-Browserverhalten bei extrem großen Textfeldern. Wenn Sie Millionen von Werten benötigen, führen Sie mehrere Stapel mit unterschiedlichen Seeds aus und fügen Sie die Ausgabe zusammen, oder kopieren Sie den Algorithmus in ein Node-Skript — dasselbe mulberry32-/cyrb53-Paar funktioniert auch serverseitig. Aus UX-Gründen geschehen Sortieren, Kopieren und Herunterladen allesamt clientseitig, daher sind 10k eine sinnvolle Obergrenze, die auf einem modernen Laptop dennoch in deutlich unter einer Millisekunde fertig ist.
F: Werden meine Daten irgendwohin hochgeladen?
A: Nein. Jede Operation läuft in Ihrem Browser als reines JavaScript: Zahlenerzeugung, Sortierung, Statistiken, Kopieren in die Zwischenablage und Herunterladen der .txt-Datei. Beim Klick auf GENERATE, COPY oder DOWNLOAD wird keine Anfrage an unsere Server gesendet — Sie können das mit dem Netzwerk-Tab Ihres Browsers überprüfen. Wir protokollieren keine Seeds, Bereiche oder Ausgaben. Die Seite ist statisches HTML, das über HTTPS von einem CDN ausgeliefert wird, sodass nichts an Ihrer Eingabe für uns je beobachtbar ist. Das macht das Tool sicher für vertrauliche Test-Fixtures, interne Lotterie-Seeds oder alles andere, das Sie lieber von Drittservern fernhalten möchten.
F: Kann ich Duplikate beim Erzeugen von Dezimalzahlen vermeiden?
A: Ja, das Kontrollkästchen "keine Duplikate" gilt auch für Dezimalzahlen mittels einer Best-Effort-Wiederholungsschleife. Da zwei unabhängig gezogene Fließkommazahlen auf Bit-Ebene fast nie kollidieren, sind Duplikate selten, es sei denn, Ihr Bereich ist im Verhältnis zur Präzision winzig (z. B. hat min=0, max=1, places=2 nur 100 verschiedene Werte). Wenn die Schleife innerhalb einer vernünftigen Anzahl von Versuchen nicht genug eindeutige Werte findet, meldet das Tool einen Kapazitätsfehler, sodass Sie den Bereich erweitern oder die Präzision erhöhen können. Für streng garantiert eindeutige Dezimalzahlen bevorzugen Sie den Ganzzahlmodus und teilen das Ergebnis selbst.
F: Wann sollte ich ein Glücksrad statt einer Zahlenliste verwenden?
A: Eine Zahlenliste eignet sich am besten für Stapelaufgaben: das Ziehen von 50 Lotterielosen, das Erzeugen von Testdaten oder das Speisen einer Simulation. Ein Glücksrad ist besser, wenn eine Person ein Element vor einem Publikum auswählt und Sie die Spannung und den visuellen Effekt möchten — Namensauswahl im Klassenzimmer, Livestream-Verlosungen, Aufgabenrotation für Kinder, Entscheidungsmeetings. Wenn das Ihr Anwendungsfall ist, sehen Sie sich randompickerwheel.app an, das eine interaktive Glücksrad-Oberfläche genau für diesen Moment bietet. Beide Tools schöpfen aus demselben CSPRNG-Baustein — der Unterschied liegt in der Präsentation, nicht in der Fairness.