Heim >Web-Frontend >js-Tutorial >Wie erstelle ich einen säbaren Zufallszahlengenerator in JavaScript?
Seedable JavaScript Random Number Generator
Die JavaScript Math.random()-Funktion generiert Zufallswerte zwischen 0 und 1 basierend auf der aktuellen Zeit, ähnlich dem Zufallszahlengenerator von Java. Es fehlt jedoch die Möglichkeit, einen Startwert anzugeben, um die Reihenfolge der generierten Zahlen zu steuern.
Erstellen eines benutzerdefinierten Zufallszahlengenerators mit Startwertunterstützung
So erstellen Sie einen Zufallszahlengenerator Zahlengenerator mit Seed-Unterstützung, ziehen Sie die folgenden Optionen in Betracht:
Implementierung eines linearen Kongruenzgenerators (LCG)
LCGs sind relativ einfach zu implementieren und bieten gute Zufälligkeitsqualitäten. Sie können die folgenden Konstanten verwenden:
m = 0x80000000; // 2**31 a = 1103515245; c = 12345;
Hier ist eine Beispielimplementierung in JavaScript:
<code class="javascript">function RNG(seed) { this.m = 0x80000000; this.a = 1103515245; this.c = 12345; this.state = seed ? seed : Math.floor(Math.random() * (this.m - 1)); } RNG.prototype.nextInt = function() { this.state = (this.a * this.state + this.c) % this.m; return this.state; }</code>
Sie können diese RNG-Klasse erweitern, um zusätzliche Methoden wie nextFloat, nextRange und auswahlbasiert bereitzustellen auf dem LCG-Kern.
Nutzung von Bibliotheken für kurze setzbare RNGs
Bibliotheken wie [js-random](https://www.npmjs.com/package/ js-random) stellen kurze, startbare RNGs mit Optionen für verschiedene Algorithmen bereit.
Beispielimplementierung
Hier ist ein einfaches Beispiel mit einem LCG-basierten RNG:
<code class="javascript">var rng = new RNG(20); for (var i = 0; i < 10; i++) { console.log(rng.nextRange(10, 50)); }</code>
Das obige ist der detaillierte Inhalt vonWie erstelle ich einen säbaren Zufallszahlengenerator in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!