random number generator c
Dieses Tutorial beschreibt die Verwendung der Funktionen rand () und srand () im Detail zum Generieren von Zufallszahlen in C ++ im Detail:
Oft müssen wir in unserer Anwendung Zufallszahlen verwenden, um Simulationen oder Spiele und andere Anwendungen zu erstellen, die zufällige Ereignisse erfordern.
Beispielsweise, Bei einem Würfelspiel ohne zufällige Ereignisse taucht jedes Mal, wenn wir die Würfel werfen, dieselbe Seite auf, was zu unerwünschten Ergebnissen führt.
Daher wird es notwendig, dass wir einen Zufallszahlengenerator zur Verfügung haben. In der physischen Umgebung können zufällige Ereignisse generiert werden, bei Computern ist dies jedoch nicht möglich.
=> Lesen Sie die Easy C ++ - Schulungsserie durch.
Dies liegt daran, dass alles in Computern binär ist, d. H. 0 oder 1 (wahr oder falsch) und nichts dazwischen. Daher generieren Computer normalerweise vorhersehbare Ereignisse und können keine zufälligen Ereignisse generieren.
Stattdessen simulieren Computer Zufälligkeiten, die mit verwendet werden Pseudozufallszahlengenerator (PRNG) . C ++ verfügt über einen Zufallszahlengenerator und kann mit vielen Anwendungen verwendet werden.
In diesem Tutorial werden wir die Funktionen / Ansätze zum Generieren von Zufallszahlen in C ++ im Detail diskutieren.
Was du lernen wirst:
- Pseudozufallszahlengenerator (PRNG) In C ++
- Rand- und Randfunktionen in C ++
- Unterschied zwischen rand () und srand ()
- C ++ Random Float
- C ++ Zufallszahl zwischen 0 und 1
- C ++ Zufallszahl zwischen 1 und 10
- Häufig gestellte Fragen
- Fazit
- Literatur-Empfehlungen
Pseudozufallszahlengenerator (PRNG) In C ++
Im Allgemeinen kann ein Pseudozufallszahlengenerator (PRNG) als ein Programm definiert werden, das einen Startwert oder eine Startnummer nimmt und sie mithilfe mathematischer Operationen in eine andere Zahl umwandelt, die sich vom Startwert unterscheidet.
Dieser Vorgang wird wiederholt ausgeführt, indem jedes Mal die zuletzt generierte Nummer verwendet wird. Jedes Mal, wenn die generierte Nummer nicht mit den vorherigen Nummern zusammenhängt. Somit kann dieses Programm eine Reihe von Zahlen erzeugen, die zufällig erscheinen.
Die C ++ - Sprache verfügt über einen integrierten Pseudozufallszahlengenerator und bietet zwei Funktionen, rand () und srand (), mit denen Zufallszahlen generiert werden können.
Lassen Sie uns diese beiden Funktionen im Detail diskutieren.
beste Spieleentwicklungssoftware für Anfänger
Rand- und Randfunktionen in C ++
srand ()
Funktionsprototyp: void srand (unsigned int seed);
Parameter: seed - Ein ganzzahliger Wert, der vom Pseudozufallszahlengenerator-Algorithmus als Startwert verwendet wird.
Rückgabewert: Keiner
Beschreibung: Mit der srand-Funktion wird die Folge von Pseudozufallszahlen mit einem Parameter namens 'Random Seed' initialisiert. Dadurch sieht die Ausgabe der Rand-Funktion zufällig aus. Andernfalls ist die Ausgabe der Funktion rand () bei jedem Aufruf gleich.
Wenn wir also den Zufallszahlengenerator mit der Funktion srand () setzen, startet er den Generator an dem Punkt, der von dem an srand übergebenen Argumentwert abhängt. Wenn wir den Zufallszahlengenerator mit der Systemzeit einstellen Beispielsweise, Vor dem ersten Aufruf der Funktion rand () werden bei jedem Ausführen des Programms die Zufallszahlen generiert.
Beachten Sie, dass wir die Funktion srand () normalerweise nur einmal vor dem Aufruf der Funktion rand () aufrufen müssen und nicht jedes Mal, wenn wir Zufallszahlen generieren.
rand ()
Funktionsprototyp: int rand (nichtig);
Parameter: keiner
Rückgabewert: Ein ganzzahliger Wert zwischen 0 und RAND_MAX.
Beschreibung: Die Funktion rand () generiert die nächste Zufallszahl in der Sequenz. Die erzeugte Zahl ist die pseudozufällige Ganzzahl zwischen 0 und RAND_MAX. RAND_MAX ist eine Konstante im Header, die im Allgemeinen auf den Wert 32767 gesetzt ist.
#include #include #include int main() { std::srand(static_cast(std::time(nullptr))); for (int count=1; count <= 100; ++count) { std::cout << std::rand() << ' '; // display 5 random numbers per row if (count % 5 == 0) std::cout << '
'; } return 0; }
Ausgabe:
Im obigen Programm haben wir die ersten 100 Zufallszahlen generiert, indem wir die Systemuhr als Startwert für die Randfunktion angegeben haben. In diesem Programm haben wir sowohl Rand- als auch Rand-Funktionen verwendet. Beachten Sie, dass aufgrund der Systemuhr als Startwert die generierte Ausgabe jedes Mal anders ist, wenn wir das Programm ausführen.
Unterschied zwischen rand () und srand ()
Reihe() | srand () |
---|---|
Wird verwendet, um Zufallszahlen zu generieren. | Setzt das von der Funktion rand () verwendete PRNG. |
Wird so oft aufgerufen, wie wir die Zufallszahlen generieren möchten. | Wird nur einmal aufgerufen, um den Zufallsgenerator zu sehen. |
Nimmt keine Argumente an. | Nimmt den Parameter, der zum Setzen des Zufallszahlengenerators verwendet wird. |
Gibt bei jedem Aufruf die Folge von Zufallszahlen zurück. | Gibt keinen Wert zurück. |
C ++ Random Float
Die oben gezeigte Funktion rand () gibt standardmäßig einen ganzzahligen Wert zurück, der in bestimmten Fällen einen Überlauf verursachen kann. Somit können wir float oder double value verwenden. Wir können Float-Zufallszahlen generieren, indem wir den Rückgabewert der Funktion rand () in 'float' setzen.
Somit wird im Folgenden eine Zufallszahl zwischen float 0.0 und 1.0 (beide einschließlich) generiert.
cout< In ähnlicher Weise erzeugt die folgende Zeile eine Zufallszahl zwischen 1,2 und 3,4
cout<<1.2 + static_cast (rand()) / ( static_cast (RAND_MAX/(3.4-1.2)));
In unserem folgenden Beispiel verwenden wir Random Float, um die Ausgabe zu generieren.
C ++ Zufallszahl zwischen 0 und 1
Wir können die Funktionen srand () und rand () verwenden, um Zufallszahlen zwischen 0 und 1 zu generieren. Beachten Sie, dass wir die Ausgabe der Funktion rand () auf den Dezimalwert float oder double umwandeln müssen.
Der Standardrückgabewert der Funktion rand (), d. H. Eine Ganzzahl, ist nicht ausreichend, um Zufallszahlen zwischen 0 und 1 anzuzeigen, die Brüche sind.
Das unten angegebene C ++ - Programm zeigt die ersten fünf Zufallszahlen zwischen 0 und 1 an.
Was ist die beste Virtual-Reality-App?
#include #include using namespace std; int main() { cout<<'Random numbers generated between 0 and 1:'< Ausgabe ::
Wir sehen, dass die Ausgabe des Programms die Zufallszahl zwischen 0 und 1 ist, die Brüche sind.
Wenn wir den Rückgabewert der Funktion rand () nicht in float oder double umwandeln, erhalten wir 0 als Zufallszahl.
C ++ Zufallszahl zwischen 1 und 10
Das nächste Beispiel ist das Generieren von Zufallszahlen zwischen 1 und 10. Es folgt das C ++ - Programm, das Zufallszahlen generiert.
Wir rufen die srand-Funktion mit der Systemuhr auf und rufen dann die rand-Funktion mit Modul 10-Operatoren auf.
#include #include #include using namespace std; int main() { srand(time(0)); // Initialize random number generator. cout<<'Random numbers generated between 1 and 10:'< Ausgabe:
Im obigen Programm generieren wir die ersten 10 Zufallszahlen zwischen 1 und 10. Beachten Sie, dass jedes Mal, wenn das Programm ausgeführt wird, aufgrund der aufgerufenen srand-Funktion unterschiedliche Zahlenmengen generiert werden.
Häufig gestellte Fragen
F # 1) Was ist die Header-Datei für die Zufallsfunktion in C ++?
Antworten: Die Funktionen zur Erzeugung von Zufallszahlen, Rand und Rand sind in definiert< cstdlib > Header von C ++.
F # 2) Was ist Rand_max in C ++?
Antwort: RAND_MAX ist eine Konstante im Header, die im Allgemeinen auf den Wert 32767 gesetzt ist. Der Pseudozufallszahlengenerator (PRNG) erzeugt Zufallszahlen zwischen 0 und RAND_MAX.
F # 3) Wie funktioniert die Zufallsfunktion?
Antworten: C ++ unterstützt zwei Zufallsfunktionen, d.h. srand () und rand (). Die Funktion srand () setzt den von der Funktion rand () verwendeten Zufallszahlengenerator, der die Zufallszahlenfolge in Abhängigkeit vom bereitgestellten Anfangssamen erzeugt.
F # 4) Wie geht es dir mit der Zeit?
Antworten: Die srand-Funktion setzt den Pseudozufallszahlengenerator (PRNG), der von der rand () -Funktion verwendet wird. Es ist eine Standardpraxis, das Ergebnis eines Aufrufs der Zeit (0) als Startwert zu verwenden. Diese Zeitfunktion gibt den Wert zurück, einige Sekunden seit 00:00 Uhr, 1. Januar 1970, UTC (aktueller UNIX-Zeitstempel).
Somit ändert sich der Wert des Samens jede Sekunde. Daher wird jedes Mal, wenn srand mit der Zeitfunktion aufgerufen wird, ein neuer Satz von Zufallszahlen erzeugt.
Fazit
Wir haben die Zufallszahlengenerierung in diesem Tutorial ausführlich besprochen. Programmiersprachen oder im Allgemeinen Computer erzeugen keine Zufallszahlen, da sie eine prädiktive Ausgabe liefern sollen. Daher müssen wir die Zufälligkeit simulieren.
Um die Zufälligkeit zu simulieren, verwenden wir den in C ++ integrierten Pseudozufallszahlengenerator (PRNG). Mit den beiden Funktionen rand () und srand () können wir also Zufallszahlen in C ++ generieren.
Die Funktion srand () wird verwendet, um Startwert zum Generieren von Zufallszahlen bereitzustellen, während die Funktion rand () die nächste Zufallszahl in der Sequenz generiert.
=> Suchen Sie hier nach der gesamten C ++ - Schulungsserie.
Literatur-Empfehlungen
- C # Zufallszahl und C # Zufallszeichenfolgengenerator mit Codebeispielen
- Python-Hauptfunktions-Tutorial mit praktischen Beispielen
- Unix Pipes Tutorial: Pipes in der Unix-Programmierung
- Rekursion in C ++
- Friend-Funktionen in C ++
- Polymorphismus in C ++
- Objektorientierte Programmierung in C ++
- OOP Java: Einführung in die objektorientierte Programmierung in Java