Wie erstelle ich einen säbaren Zufallszahlengenerator in JavaScript?
Nov 04, 2024 pm 05:35 PMSeedable 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!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Ersetzen Sie Stringzeichen in JavaScript

JQuery überprüfen, ob das Datum gültig ist

HTTP-Debugging mit Knoten und HTTP-Konsole

JQuery fügen Sie Scrollbar zu Div hinzu

Benutzerdefinierte Google -Search -API -Setup -Tutorial
