Einführung in den Zufallszahlengenerator in C ++
In unserer Programmierung kommt es oft vor, dass die Zahlen zufällig generiert werden. Zum Beispiel Würfelspiel, Kartenverteilung an Spieler, Apps zum Mischen der Lieder usw. Um diese Dinge zu handhaben, sollten wir einige Hilfsprogramme haben. In C ++ haben wir zwei Dienstprogramme, um diese Zufallszahlengenerierung zu erreichen. Zuerst werden wir uns diese Funktionen ansehen und ihre Bedürfnisse verstehen. Später werden wir sie in unserem Code verwenden, um die Funktionalität zu erreichen. Beginnen wir also mit den Funktionen und der Bibliothek, mit der sie verknüpft sind. In diesem Thema lernen wir den Zufallszahlengenerator in C ++ kennen.
Wie generiert man eine Zufallszahl?
Um die Erzeugung von Zufallszahlen zu erreichen, stellt C ++ die Dienstprogramme bereit. Wir alle wissen, dass die meisten integrierten Funktionen in der Header-Datei von C ++ enthalten sind. Eine solche Header-Datei ist stdlib.h. Es ist eine Standardbibliothek mit vielen eingebauten Funktionen wie EXIT_FAILURE, EXIT_SUCCESS, RAND_MAX, NULL usw. Mit diesen Funktionen können wir leicht die erforderliche Lösung erhalten. Wir müssen keine langwierige Logik schreiben, um das herauszuholen. Stattdessen können wir einfach eine dieser integrierten Funktionen gemäß unseren Anforderungen aufrufen. Um auf die gleiche Weise eine Zufallszahlengenerierung zu erreichen, haben wir zwei eingebaute Funktionen. Sie sind randomisiert und rand. Wenn wir beide in Kombination verwenden, können wir das gewünschte Ergebnis erzielen.
Lassen Sie uns sehen, was diese Funktionen im Grunde sind.
- randomize () - Diese Funktion ist dafür verantwortlich, bei jedem Programmstart eine Zufallszahl zu generieren. Das Ergebnis ist bei jeder Ausführung des Codes eindeutig. Aufgrund dieser einzigartigen Ausgabe verlassen wir uns mehr auf diese Funktion. Wenn Sie beispielsweise den Code zum ersten Mal ausführen, wird die Ausgabe wie folgt generiert: 75, 23, 56, 24, 5, 21, 76, 32, 20 und 37. Beim nächsten Mal wird die Ausgabe wie folgt generiert: 5, 64, 51, 78, 94, 53, 41, 19, 96 und 52. Wir werden sehen, wie die Ausgabe mit und ohne diese Funktion sein wird, indem wir Code in den nächsten Abschnitt schreiben.
- rand () - Um die Zahlen von 0 bis RAND_MAX-1 zu generieren, verwenden wir diese Funktion. Hier bezeichnet RAND_MAX den maximal möglichen Bereich der Nummer. Angenommen, wir müssen Zufallszahlen im Bereich von 0 bis 99 generieren, dann beträgt der Wert von RAND_MAX 100. Basierend auf den Anforderungen der Anwendung, die wir erstellen möchten, wird der Wert von RAND_MAX ausgewählt. Wenn es sich beispielsweise um ein Würfelspiel handelt, ist der RAND_MAX-Wert 6. Wenn es sich um ein Kartenspiel handelt, ist der RAND_MAX-Wert 52 usw.
Denken Sie daran, dass beide Funktionen in der Standardbibliothek stdlib.h deklariert sind. Vergessen Sie also nicht, diese Header-Datei in Ihren Code aufzunehmen. Nun wollen wir sehen, wie wir ein einfaches Zufallszahlengeneratorprogramm schreiben können.
Beispiel mit Schritten
Nachdem wir uns ein Bild von der Funktionsweise des Zufallszahlengenerators gemacht haben, schreiben wir ein Basisprogramm, das eine Zufallszahl generiert und die Ausgabe ausgibt.
Lassen Sie uns das Programm Schritt für Schritt schreiben, um mehr Einblick in die Arbeitsweise zu erhalten.
- Der erste Schritt besteht darin, die beiden für das Programm erforderlichen Header-Dateien einzuschließen. Das erste, wenn das h die Eingabe- und Ausgabefunktionalitäten enthält. Dies ist die Eingabe-Ausgabe-Stream-Header-Datei. Die zweite und wichtige Header-Datei ist stdlib.h. Wie bereits erwähnt, enthält diese Standardbibliothek die beiden Funktionen rand und randomize. Fügen Sie daher beide am Anfang des Codes ein.
#include
#include
using namespace std;
- Nachdem wir die Header-Dateien eingefügt haben, besteht der nächste Schritt darin, die Hauptfunktion für die Ausführung des Codes zu schreiben. Um die Hauptfunktion im nächsten Teil zu definieren.
int main( )
(
)
- Deklarieren Sie eine Zahl, um den Wert der Zufallszahl zu speichern und auszudrucken. Der Datentyp ist vom Typ int und kann beliebig benannt werden.
int number;
- Wir brauchen einen Schleifenzähler, um die Werte in der Schleife zu erhöhen. Deklarieren Sie also den Index i vom Typ int. Der maximale Inkrementwert, den wir in der for-Schleife definieren .
int i;
- Nun schreiben wir eine for-Schleife, um die Werte der zufällig generierten Zahl zu drucken. Der Einfachheit halber drucken wir 10 Zahlen. Die maximale Anzahl von Inkrementen beträgt also 10.
for(i = 1; i <= 10; i++)
(
)
- In der for-Schleife schreiben wir die rand-Funktion. Der folgende Code sagt uns, dass jede generierte Zufallszahl durch 100 geteilt wird und der Rest genommen wird. Das bedeutet, dass die gedruckten Zahlen im Bereich von 0 bis 99 liegen. Wenn Sie höhere Bereiche wünschen, ist die Modulo-Zahl unterschiedlich. Das heißt, statt 100 können wir 150, 200, 100 usw. platzieren.
number = rand() % 100;
- Im letzten Schritt drucken wir die generierte Nummer mit cout.
cout << number << "\t";
- Die Ausgabe des Codes ist wie folgt. Bitte beachten Sie, dass Sie aufgrund des Zufallszahlengenerators möglicherweise eine andere Ausgabe erhalten.
- Das Problem mit dem obigen Code ist, dass bei jeder Ausführung des Codes die gleiche Ausgabe erfolgt. Um dies zu vermeiden, müssen wir srand () verwenden. Hier beziehen wir uns auf die Zeit in dieser Instanz und generieren die neuen Werte jedes Mal, wenn wir das Programm ausführen.
Schauen wir uns den kompletten Code mit der srand-Funktion an.
#include
#include
using namespace std;
int main( )
(
int number;
int i;
srand(time(0));
for(i = 1; i <= 10; i++)
(
number = rand() % 100;
cout << number << "\t";
)
)
Zwei Ausführungsausgaben des Codes:
Erste Ausführung:
Zweite Ausführung:
- Nachfolgend finden Sie den Code zum Generieren von 5 Zufallszahlen innerhalb von 1000. Ändern Sie den Wert der Zahl und sehen Sie sich die jeweils generierte Ausgabe an. Vergleichen Sie die Unterschiede zwischen unsigned und without using.
#include
#include
#include
int main ()
(
int i, number;
time_t nTime;
number = 5;
srand((unsigned) time(&nTime));
printf("Random numbers are: \n");
for( i = 0 ; i < number ; i++ )
(
printf("%d\n", rand() % 1000);
)
return(0);
)
Ausgabe:
Für die 1. Iteration
Für die 2. Iteration
Fazit - Zufallszahlengenerator in C ++
In diesem Artikel haben wir Schritt für Schritt gelernt, was ein Zufallszahlengenerator ist, welche Anforderungen er an einen Zufallszahlengenerator stellt und welche Funktionen in C ++ integriert sind, um dies mit und ohne Verwendung der Zufallsfunktion zu erreichen den Code zu schreiben und schließlich die Ausgaben von zwei verschiedenen Ansätzen zu vergleichen.
Empfohlene Artikel
Dies ist eine Anleitung zum Zufallszahlengenerator in C ++. Hier diskutieren wir, wie Zufallszahlen generiert werden, zusammen mit Beispielen und Schritten. Sie können auch den folgenden Artikel lesen, um mehr zu erfahren -
- Zugriffsmodifikatoren in C ++
- Zufallszahlengenerator in Python
- Zufallszahlengenerator in R
- Variablen in C ++
- Zugriffsmodifikatoren in PHP
- Zufallszahlengenerator in C #
- Top 11 Features und Vorteile von C ++
- Beispiele für integrierte Python-Funktionen