Effiziente gleichmäßig verteilte Zufallszahlen generieren
Im Bereich der Programmierung spielt die Generierung von Zufallszahlen in verschiedenen Anwendungen eine entscheidende Rolle. Unter diesen Aufgaben ist die Erstellung gleichmäßig verteilter Zufallszahlen eine häufige Anforderung. Lassen Sie uns die Einschränkungen bestehender Ansätze untersuchen und eine optimierte Lösung vorstellen, die die spezifischen Anforderungen an Geschwindigkeit, Gleichmäßigkeit, variable Bereiche und Säbarkeit erfüllt.
Einschränkungen naiver Ansätze
Ein naiver Ansatz, der die Funktion rand() verwendet, bietet aufgrund des Ausschlusses des maximalen Grenzwerts keine echte Einheitlichkeit. Um dieses Problem anzugehen, wurde eine zweite Formel vorgeschlagen, aber Experimente ergaben eine ungleichmäßige Verteilung.
Eine optimale Lösung: Nutzung der C-Standardbibliothek
Glücklicherweise der C-Standard Die Bibliothek bietet eine umfassende Lösung zur Generierung unverzerrter Zufallszahlen: die
Das folgende C-Code-Snippet demonstriert die Implementierung:
#include <random> std::random_device rd; // Random device for seed initialization std::mt19937 rng(rd()); // Random-number engine using Mersenne-Twister std::uniform_int_distribution<int> uni(min,max); // Distribution class for uniform integers auto random_integer = uni(rng);
Dies Ansatz bietet erhebliche Vorteile:
Durch die Nutzung der C-Standardbibliothek können Sie dies mühelos tun Generieren Sie gleichmäßig verteilte Zufallszahlen effizient und zuverlässig, sodass keine komplexen Formeln erforderlich sind oder das Rad neu erfunden werden muss.
Das obige ist der detaillierte Inhalt vonWie kann ich in C effizient gleichmäßig verteilte zufällige ganze Zahlen generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!