Heim > Backend-Entwicklung > C++ > Wie kann ich in C effizient gleichmäßig verteilte zufällige ganze Zahlen generieren?

Wie kann ich in C effizient gleichmäßig verteilte zufällige ganze Zahlen generieren?

Linda Hamilton
Freigeben: 2025-01-03 14:21:42
Original
402 Leute haben es durchsucht

How Can I Efficiently Generate Uniformly Distributed Random Integers in C  ?

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 Kopfzeile. Dieser Header stellt erweiterte Zufallszahlen-Engines wie Mersenne-Twister und Verteilungsklassen bereit, die konsistente, einheitliche Ergebnisse gewährleisten.

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

Dies Ansatz bietet erhebliche Vorteile:

  • Geschwindigkeit: Die C-Standardbibliothek ist auf Leistung ausgelegt und bietet eine optimierte Lösung.
  • Gleichmäßigkeit: Die Klasse std::uniform_int_distribution garantiert unvoreingenommene Ergebnisse innerhalb des angegebenen Bereichs.
  • Variablenbereiche: Die Lösung unterstützt beliebiges Minimum und Maximum Grenzen.
  • Seedbarkeit: Das std::random_device ermöglicht das Seeding der Zufalls-Engine zur Reproduzierbarkeit.

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage