Heim > Artikel > Backend-Entwicklung > Wie Zufallszahlen erzeugt werden
Zufallszahlen spielen in verschiedenen Bereichen wie Simulationen, Kryptographie, statistischer Stichprobenziehung und mehr eine entscheidende Rolle. Dieser Artikel befasst sich mit der Generierung von Zufallszahlen und konzentriert sich dabei auf zwei beliebte Programmiersprachen: JavaScript und Python.
Die meisten Programmiersprachen verwenden Pseudozufallszahlengeneratoren (PRNGs), um Zufallszahlen zu erzeugen. PRNGs verwenden mathematische Algorithmen, um zufällig erscheinende Zahlenfolgen zu generieren. Diese Zahlen sind nicht wirklich zufällig, da sie durch einen Anfangswert, den sogenannten Startwert, bestimmt werden. Für viele Anwendungen reichen sie jedoch aus.
Die Funktion Math.random() von JavaScript wird häufig zum Generieren von Zufallszahlen verwendet. Der genaue von Math.random() verwendete Algorithmus kann je nach JavaScript-Engine variieren, ein weit verbreiteter Algorithmus ist jedoch der Mersenne Twister.
Der Mersenne Twister ist für seinen langen Zeitraum und seine hochwertige Zufälligkeit bekannt. Hier ist ein vereinfachtes Beispiel dafür, wie der Mersenne Twister-Algorithmus in JavaScript implementiert werden kann:
class MersenneTwister { constructor(seed) { if (seed === undefined) { seed = new Date().getTime(); } this.mt = new Array(624); this.index = 0; this.mt[0] = seed; for (let i = 1; i < 624; i++) { this.mt[i] = (0x6c078965 * (this.mt[i - 1] ^ (this.mt[i - 1] >> 30)) + i) >>> 0; } } generate() { if (this.index === 0) { this.twist(); } let y = this.mt[this.index]; y = y ^ (y >> 11); y = y ^ ((y << 7) & 0x9d2c5680); y = y ^ ((y << 15) & 0xefc60000); y = y ^ (y >> 18); this.index = (this.index + 1) % 624; return y / 0xffffffff; } twist() { for (let i = 0; i < 624; i++) { const y = (this.mt[i] & 0x80000000) + (this.mt[(i + 1) % 624] & 0x7fffffff); this.mt[i] = this.mt[(i + 397) % 624] ^ (y >> 1); if (y % 2 !== 0) { this.mt[i] = this.mt[i] ^ 0x9908b0df; } } } } // Example usage: const mt = new MersenneTwister(12345); // Seed value const randomNumber = mt.generate(); // Get a random number console.log(randomNumber);
Dieser Code demonstriert eine vereinfachte Version des Mersenne Twister-Algorithmus, der zur Generierung von Zufallszahlen verwendet wird.
In JavaScript können Sie mit Math.random():
eine Zufallszahl zwischen 0 (einschließlich) und 1 (ausschließlich) generieren
const randomNumber = Math.random(); console.log(randomNumber);
Python stellt das Zufallsmodul bereit, das verschiedene Funktionen zum Generieren von Zufallszahlen enthält. Der vom Zufallsmodul von Python verwendete Standard-PRNG-Algorithmus ist ebenfalls der Mersenne Twister.
Hier sind einige Beispiele für die Generierung von Zufallszahlen in Python:
import random # Generate a random float between 0.0 and 1.0 random_float = random.random() print(random_float) # Generate a random integer between 1 and 100 random_int = random.randint(1, 100) print(random_int) # Generate a random number from a normal distribution with mean 0 and standard deviation 1 random_normal = random.gauss(0, 1) print(random_normal)
Um die Reproduzierbarkeit sicherzustellen, können Sie den Zufallszahlengenerator in Python starten:
import random # Seed the random number generator random.seed(12345) # Generate random numbers print(random.random()) print(random.randint(1, 100))
Die Verwendung desselben Startwerts erzeugt bei jeder Ausführung des Programms dieselbe Folge von Zufallszahlen.
Zufallszahlengenerierung ist ein grundlegendes Konzept mit einem breiten Anwendungsspektrum. Während die von Math.random() in JavaScript und dem Zufallsmodul in Python generierten Zahlen nicht wirklich zufällig sind, sind sie für die meisten praktischen Zwecke ausreichend zufällig. Für Entwickler und Forscher ist es gleichermaßen wichtig zu verstehen, wie diese Generatoren funktionieren und wie man sie effektiv nutzt.
Dieser Artikel bietet einen grundlegenden Überblick darüber, wie Zufallszahlen in JavaScript und Python generiert werden, zusammen mit praktischen Beispielen für die Verwendung von Math.random() und dem Zufallsmodul von Python.
Das obige ist der detaillierte Inhalt vonWie Zufallszahlen erzeugt werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!