Wie Zufallszahlen erzeugt werden

WBOY
Freigeben: 2024-07-23 21:03:14
Original
199 人浏览过

How Random Numbers are Generated

Die Generierung von Zufallszahlen verstehen

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.

Pseudozufallszahlengeneratoren (PRNGs)

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.

Eigenschaften von PRNGs

  1. Deterministisch: Bei gleichem Startwert erzeugt ein PRNG immer die gleiche Zahlenfolge.
  2. Periodizität: PRNGs wiederholen ihre Zahlenfolge schließlich nach einer bestimmten Zeitspanne.
  3. Geschwindigkeit: PRNGs sind im Allgemeinen schnell und effizient.

JavaScript: Math.random()

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.

Wie Math.random() funktioniert

Der Mersenne Twister ist für seinen langen Zeitraum und seine hochwertige Zufälligkeit bekannt. Hier ist ein vereinfachtes Beispiel, 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);
Nach dem Login kopieren

Dieser Code demonstriert eine vereinfachte Version des Mersenne Twister-Algorithmus, der zur Generierung von Zufallszahlen verwendet wird.

Verwenden von Math.random()

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);
Nach dem Login kopieren

Python: Zufallsmodul

Python stellt das Zufallsmodul bereit, das verschiedene Funktionen zum Generieren von Zufallszahlen enthält. Der vom Zufallsmodul von Python verwendete Standard-PRNG-Algorithmus ist auch der Mersenne Twister.

So verwenden Sie das Zufallsmodul von Python

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)
Nach dem Login kopieren

Seeding des Zufallszahlengenerators

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))
Nach dem Login kopieren

Wenn Sie denselben Startwert verwenden, wird jedes Mal, wenn Sie das Programm ausführen, dieselbe Folge von Zufallszahlen erzeugt.

Abschluss

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.

以上是Wie Zufallszahlen erzeugt werden的详细内容。更多信息请关注PHP中文网其他相关文章!

Quelle:dev.to
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!