Heim > Backend-Entwicklung > C++ > Wie kann ich in C gleichmäßig verteilte Zufallszahlen innerhalb eines bestimmten Bereichs generieren?

Wie kann ich in C gleichmäßig verteilte Zufallszahlen innerhalb eines bestimmten Bereichs generieren?

Patricia Arquette
Freigeben: 2024-12-24 11:06:18
Original
168 Leute haben es durchsucht

How Can I Generate Uniformly Distributed Random Numbers Within a Specific Range in C  ?

Gleichmäßige Zufallszahlengenerierung über einen Bereich hinweg

Sie suchen nach einer Methode zur gleichmäßigen Generierung von Zufallszahlen innerhalb eines bestimmten Bereichs [min, max].

Fehler bei rand

Ihre aktuelle Implementierung mit rand() und dem Modulo-Operator gewährleistet möglicherweise keine gleichmäßige Verteilung. da sein Verhalten von RAND_MAX und dem Bereich selbst abhängt.

C 11 und Uniform Range Generation

In C 11 bietet std::uniform_int_distribution eine auf diesen Bedarf zugeschnittene Lösung :

#include <random>

std::uniform_int_distribution<int> distr(min, max);
std::random_device rand_dev;
std::mt19937 generator(rand_dev());

int random_number = distr(generator);
Nach dem Login kopieren

Zusätzliche Funktionen von

Die header bietet eine große Auswahl an Zufallszahlengeneratoren mit unterschiedlichen Verteilungen, wie z. B. Bernoulli, Poisson und Normal.

Container-Mischen

Um einen Container zu mischen, verwenden Sie std::shuffle:

#include <random>
#include <vector>

std::vector<int> vec = {4, 8, 15, 16, 23, 42};
std::random_device random_dev;
std::mt19937 generator(random_dev());

std::shuffle(vec.begin(), vec.end(), generator);
Nach dem Login kopieren

Boost.Random

Wenn die Verwendung eines C 11-Compilers nicht möglich ist, ziehen Sie Boost.Random in Betracht, das über eine ähnliche Schnittstelle wie verfügt das C 11-Gegenstück.

Das obige ist der detaillierte Inhalt vonWie kann ich in C gleichmäßig verteilte Zufallszahlen innerhalb eines bestimmten Bereichs 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