Seeding des Zufallszahlengenerators in JavaScript
Einführung:
Der in JavaScript integrierte Zufallszahlengenerator, Math.random() kann nicht explizit gesetzt oder manipuliert werden. Allerdings können externe Funktionen verwendet werden, um Seeding-Funktionen bereitzustellen und qualitativ hochwertige Zufallszahlen mit bestimmten Anfangsbedingungen zu generieren.
Antwort:
Während Math.random() nicht seedbar bleibt, gibt es mehrere In JavaScript gibt es effiziente und robuste PRNG-Funktionen (Pseudozufallszahlengenerator), die gesät werden können und eine hervorragende Zufälligkeit bieten.
Seed Initialisierung:
Um PRNGs richtig zu initialisieren, ist es entscheidend, Seeds mit hoher Entropie zu verwenden. Eine effektive Methode ist die Verwendung von Hash-Funktionen wie cyrb128, die aus Eingabezeichenfolgen verschiedene 128-Bit-Hash-Werte generieren können. Alternativ kann auch das Auffüllen des Startwerts mit Dummy-Daten und das Vorrücken des Generators verwendet werden, obwohl dadurch die Anzahl der Anfangszustände begrenzt wird.
sfc32 (Simple Fast Counter) PRNG:
sfc32 ist ein bemerkenswertes PRNG, das die PractRand-Zufallszahlentestsuite erfolgreich bestanden hat. Es arbeitet mit einem 128-Bit-Status und liefert außergewöhnliche Geschwindigkeit in JavaScript. Ein Beispiel für die Verwendung von sfc32 mit einem benutzerdefinierten Seed-Generator:
function sfc32(a, b, c, d) { return function() { a |= 0; b |= 0; c |= 0; d |= 0; let t = (a + b | 0) + d | 0; d = d + 1 | 0; a = b ^ b >>> 9; b = c + (c << 3) | 0; c = (c << 21 | c >>> 11); c = c + t | 0; return (t >>> 0) / 4294967296; } } const seedgen = () => (Math.random() * 2 ** 32) >>> 0; const getRand = sfc32(seedgen(), seedgen(), seedgen(), seedgen()); for (let i = 0; i < 10; i++) console.log(getRand());
Mit diesen Techniken können JavaScript-Entwickler die Leistungsfähigkeit von Seed-PRNGs nutzen, um hochwertige Zufallszahlen für verschiedene Anwendungen zu generieren, von der Simulation bis zur Spieleentwicklung .
Das obige ist der detaillierte Inhalt vonWie kann ich den Zufallszahlengenerator in JavaScript setzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!