So generieren Sie zufällige Schwimmer in C ++

So generieren Sie zufällige Schwimmer in C ++

In C ++ können verschiedene Techniken zur Herstellung verwendet werden zufällige Schwimmkörper. Für eine Vielzahl von Anwendungen, einschließlich Simulationen und Erzeugung von Zufallszahlen zum Testen, ist es möglicherweise vorteilhaft, generiert zu werden zufällige Schwimmkörper in c++. Dieser Artikel wird verschiedene Techniken zum Erstellen durchlaufen zufällige Schwimmkörper in c++.

Zufällige Float -Zahlen in c++

Zufällige Schwimmer können generiert werden In C ++ zwei Möglichkeiten verwenden.

    • Verwenden Sie Rand () Funktion
    • Verwenden von std :: uniform_real_distribution

1: Verwenden Sie Rand () Funktion

Wir können erzeugen zufällige Schwimmkörper durch Verwendung des Standards der C ++ - Bibliothek Rand () Funktion. Wir können eine Ganzzahl über erzeugen Rand () Funktion, konvertieren Sie es in einen Schwimmer und verwenden Sie es dann, um zu erzeugen zufällige Schwimmkörper. Dazu können wir die generierte Ganzzahl durch eine große Anzahl trennen, um eine Zahl zwischen 0 und 1 zu erhalten. A zufälliger Float kann dann erhalten werden, indem dieser Wert mit dem gewünschten Float -Bereich multipliziert wird. Zum Beispiel kann der folgende Code verwendet werden, um a zu erstellen zufälliger Float Zwischen 0 und 1:

#enthalten
#enthalten
#enthalten
int main ()

Srand (Zeit (null));
für (int i = 0; i < 10; i++)
float r = rand () / static_cast(Rand_max);
std :: Cout << r << std::endl;

Rückkehr 0;


Im obigen Code die Rand () Funktion wird verwendet, um 10 zu erzeugen Zufällige Gleitkommawerte zwischen 0 und 1 und die Zeit() Funktion wird verwendet, um den Zufallszahlengenerator zu säen. Der Rand () Die Methode generiert eine Zahl, die völlig zufällig ist und zwischen 0 und Rand_max liegt. Um sicherzustellen, dass die Zufallszahlsequenz jedes Mal eindeutig ist, wenn das Programm ausgeführt wird, ist die Srand (Zeit (null)) Die Funktion erstellt den Saatgut für den Zufallszahlengenerator abhängig von der aktuellen Zeit.

Ausgang



Die Verwendung der Nutzung der Rand () Technik zu generieren zufällige Schwimmkörper hat eine Reihe von Einschränkungen. Die Zahlen sind nicht wirklich zufällig, da ein Algorithmus verwendet wurde, um sie zu generieren. Die Verteilung der generierten Werte ist ebenfalls nicht einheitlich, da bestimmte Werte häufiger erzeugt werden als andere.

2: Verwenden Sie STD :: Uniform_real_distribution

Die C ++ 11 -zufällige Bibliothek ist eine zusätzliche Erzeugungsmethode zufällige Schwimmkörper. Um zufällige Anzahl verschiedener Art zu erzeugen, bietet diese Bibliothek mehrere Verteilungen an. Wir können die verwenden EINFALIERT Verteilung zu produzieren zufällige Schwimmkörper. Diese Verteilung erzeugt zufällige Schwimmkörper Innerhalb eines bestimmten Bereichs unter Verwendung von zwei Argumenten: einem Mindestwert und einem Maximalwert.

Schauen Sie sich diesen Code an, um zu generieren zufällige Schwimmkörper Verwendung EINFALIERT.

#enthalten
Verwenden von Namespace STD;
int main ()

default_random_engine rand_number;
EINFALIERT Verteilung (0.0,5.0);
für (int i = 1; i < 10; i++)
Cout << distribution(rand_number) << '\n';

Rückkehr 0;


Im obigen Code verwenden wir die zufällige Bibliothek, die 5 erstellt wird Zufälliger Gleitpunkt Werte zwischen 0 und 4. Es erzeugt eine gleichmäßige Verteilung der Verteilungsobjekte mit einem Bereich von [0).0, 5.0] und ein Standard -Zufallszahlen -Engine -Objekt Rand_number. Die for -Schleife verwendet das Verteilungsobjekt und die Gen -Engine, um 5 zufällige Ganzzahlen zu erzeugen, und dann verwendet dann Cout um sie auf der Konsole anzuzeigen.

Ausgang



Das Problem mit der Verwendung STD :: Uniform_real_distribution ist, dass wir keine zufälligen Sequenzen produzieren können, was jedes Mal ähnliche Sequenzen führt. Die Häufigkeit oder Wahrscheinlichkeit in einem bestimmten Bereich kann mit diesem Ansatz berechnet werden, jedoch über eine große Anzahl von Tests.

Abschluss

In C ++ gibt es mehrere Ansätze zur Erzeugung zufällige Schwimmkörper. Eine Strategie kann je nach den Umständen angemessener sein als die anderen. Die einheitliche reale Verteilungsklasse in der C ++ 11 -Zufallsbibliothek bietet eine Mitgliedsfunktion, die einheitlich verteilte kontinuierliche Werte oder zufällige reelle Zahlen aus einem Eingabebereich erzeugt. Der Rand () Die Funktion bietet eine einfache Methode für die Erzeugung zufällige Schwimmkörper. Die ausgewählte Technik hängt letztendlich von den Anforderungen des Programmierers und den Anforderungen ihrer Software ab.