Heim > Web-Frontend > js-Tutorial > Wie erstelle ich einen konsistenten Zufallszahlengenerator in JavaScript?

Wie erstelle ich einen konsistenten Zufallszahlengenerator in JavaScript?

DDD
Freigeben: 2024-11-04 09:26:02
Original
581 Leute haben es durchsucht

How to Create a Consistent Random Number Generator in JavaScript?

Erstellen eines speicherbaren JavaScript-Zufallszahlengenerators

Die Funktion Math.random() in JavaScript stellt automatisch eine Zufallszahl zwischen 0 und 1 bereit basierend auf der aktuellen Uhrzeit initialisiert. Es besteht jedoch Bedarf an einem Zufallszahlengenerator, der es benutzerdefinierten Startwerten ermöglicht, wiederholbare Folgen von Pseudozufallszahlen zu erzeugen.

Lösung:

Implementierung Bei einem Seeding-Zufallszahlengenerator muss ein geeigneter PRNG-Algorithmus (Pseudozufallszahlengenerator) ausgewählt werden, der Seeding unterstützt. Eine beliebte Option ist der Mersenne Twister-Algorithmus, der für seine hervorragende Zufälligkeit und lange Periode bekannt ist.

Die Implementierung von Mersenne Twister kann jedoch komplex sein. Für Anfänger empfiehlt sich eine Alternative wie ein linearer Kongruenzgenerator (LCG). LCGs sind einfach zu implementieren und bieten eine ordentliche Zufälligkeit, obwohl sie nicht so stark sind wie Mersenne Twister.

LCG-Implementierung (RNG-Klasse)

Der folgende Ausschnitt zeigt einen LCG Implementierung in JavaScript unter Verwendung der GCC-Konstanten:

<code class="javascript">function RNG(seed) {
  this.m = 0x80000000; // 2**31;
  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>
Nach dem Login kopieren

Verwendung:

Erstellen Sie eine Instanz der RNG-Klasse mit einem gewünschten Startwert:

<code class="javascript">var rng = new RNG(20);</code>
Nach dem Login kopieren

Zugriff auf zufällige Ganzzahlen:

<code class="javascript">for (var i = 0; i < 10; i++)
  console.log(rng.nextInt());</code>
Nach dem Login kopieren

Zufällige Gleitkommazahlen (0 bis 1) generieren:

<code class="javascript">for (var i = 0; i < 10; i++)
  console.log(rng.nextFloat());</code>
Nach dem Login kopieren

Zufallswerte innerhalb eines angegebenen Bereichs generieren:

<code class="javascript">for (var i = 0; i < 10; i++)
  console.log(rng.nextRange(10, 50)); // Random integers between 10 (inclusive) and 50 (exclusive)</code>
Nach dem Login kopieren

Wählen Sie zufällige Elemente aus einem Array aus:

<code class="javascript">var digits = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
for (var i = 0; i < 10; i++)
  console.log(rng.choice(digits)); // Random digits from the array</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie erstelle ich einen konsistenten Zufallszahlengenerator in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage