Hier sind jedoch andere Dinge zu schätzen, bevor sie das codieren, das. Zufällige Zahlen, die durch C ++ 20 generiert werden, folgen einer Sequenz. Es gibt viele solcher Sequenzen, sodass zufällige Zahlen nicht wirklich zufällig sind. Der Benutzer des Programms kann kaum wissen, welche Sequenz der Programmierer ausgewählt hat und wie die nächste Zahl in demselben Code aufgerufen wird, wenn die zufällige Funktion aufgerufen wird.
Jede Sequenz hat eine Startnummer. Der Samen hängt mit der Startnummer einer Sequenz zusammen. Jede Sequenz hängt vom Samen und der Sequenzverteilung ab. Die Sequenzverteilung ist das Profil der Sequenz.
In diesem Artikel wird erläutert, wie ein Array mit Zufallsnummern ausfüllt, die mit den Klassen beginnen: random_device, default_random_engine und uniform_int_distribution. Diese Klassen befinden sich alle in der zufälligen Bibliothek, die einbezogen werden muss. Das Skelett eines Programms zum Ausfüllen eines Arrays von 10 Elementen mit zufälligen Zahlen ist wie folgt:
#enthaltenBeachten Sie, dass jeder arithmetische Typ als Elementtyp für das Array verwendet werden kann. Die Größe des Arrays beträgt 10. Eine beliebige Anzahl von Zufallszahlen kann jedoch erhalten werden.
Motor und Verteilung
In diesem Thema ist ein Motor ein Generator von Zufallszahlen.
random_device
Dies ist eine Klasse, aus der Objekte instanziiert werden. Ein Objekt aus dieser Klasse ist ein Gerät und kein Motor. Dies braucht einen Generator, um nützlich zu sein. Ein Generator kann einen Random_Device als Argument nehmen.
default_random_engine
Ein Motor in diesem Thema generiert zufällige Zahlen. Es gibt verschiedene Motoren, aus denen der Programmierer wählen kann. Dies muss ausgewählt werden, wenn der Programmierer nicht sicher ist, welche Motor zu wählen ist. Dies ist eine Klasse, aus der Objekte instanziiert werden. Es dauert ein Random_Device -Objekt als Argument.
Uniform_int_distribution
Es gibt viele Sequenzen Distributionsprofile, aus denen der Programmierer auswählen kann. Der für diesen Artikel ausgewählte ist: Uniform_int_distribution. Dies ist eine Klasse, aus der Objekte erstellt werden können. Die Konstruktion nimmt einen Motor als Argument sowie die unteren und oberen Grenzzahlen für die Zufallszahlen an. Es ist eigentlich eine Klassenvorlage. Eine seiner Konstruktionssyntaxen ist:
explizite Uniform_int_distribution (inttype a, inttype b = numeric_limitsDie folgenden drei Aussagen arbeiten zusammen:
Random_Device Rd;Von 4 bis 13 sind zehn Ganzzahlen, einschließlich der unteren und oberen Grenzen. Die Vorlagenspezialisierung für das Verteilungsobjekt Dist ist int int. Aus diesem Bereich können also zehn verschiedene Zufallszahlen ausgewählt werden (4 - 13). Beachten Sie, dass das Argument für Eng () Rd () und nicht RD lautet. Beachten Sie auch, dass jeder arithmetische Typ die Vorlagenspezialisierung für diese Verteilungskonstruktion sein könnte.
Verwenden Sie aus diesem Code, um die nächste Zufallszahl zu erhalten, "dist (eng)" .
Zehn zufällige ganze Zahlen produzieren
Das folgende Programm erzeugt zehn zufällige Ganzzahlen von 4 bis 13 inklusive.
#enthaltenDie Ausgabe vom Computer des Autors lautet:
7 10 4 10 6Einige Zahlen traten mehr als einmal auf. Das Programm beginnt mit der Aufnahme der iStream -Bibliothek für Eingabe und Ausgabe. Danach sind die zufälligen Bibliothek für die Zufallsnummern für die FORR enthalten. Die nächste Zeile ist eine Aussage und keine Richtlinie. Es endet mit einem Semikolon. Es besteht darauf, dass jeder Name, der nicht mit „std ::“ vorausgeht, den Standard -Namespace ist.
Dann gibt es die C ++ - Hauptfunktion. Die ersten drei Aussagen der Hauptfunktion wurden zuvor erklärt. Im nächsten Code -Segment gibt Dist (ENG) die nächste Zufallszahl aus; Natürlich innerhalb des Bereichs (inklusive) als Argumente für den Verteilungskonstruktor.
Füllen eines Arrays mit Zufallszahlen
Im obigen Code wurden zehn zufällige Zahlen mit dem Ausdruck Dist (Eng) erzeugt. Es wurde zehnmal tippt. Es kann einmal tippt und zehnmal genannt werden, wenn es in einem Fürschleifen durchgeführt wird. Die For-Schleife muss zehnmal iterieren. In dieser Situation wird die Rückgangsnummer nicht an das Terminal (Bildschirm) gesendet. Es wird an den nächsten Elementort des Arrays gesendet. Das folgende Programm zeigt dies:
#enthaltenDie Ausgabe vom Computer des Autors ist diesmal:
9 8 12 10 8 10 8 5 4 11Beachten Sie, wie der erste For-Schleife codiert wurde. Natürlich kann jeder Bereich ausgewählt werden. Das folgende Programm verwendet einen Bereich von 0 bis 100:
#enthaltenDie Ausgabe vom Computer des Autors ist diesmal:
43 52 52 24 90 81 21 72 33 42Obwohl die Reichweite mehr als zehn Ganzzahlen hat, wurden nur zehn Zufallszahlen erzeugt, wie aus dem ersten FORS-Schleifen entschieden.
Abschluss
Führen Sie das folgende Verfahren durch, um ein Array mit Zufallszahlen zu füllen: Generieren Sie eine Zufallszahl und geben Sie das Array als erstes Element ein. Generieren Sie eine andere Zufallszahl und setzen Sie als zweites Element ein. Generieren Sie eine dritte Zufallszahl und setzen Sie als drittes Element ein. Fahren Sie auf diese Weise fort, bis die Anzahl der erforderlichen Zufallszahlen erreicht ist. Das folgende Codesegment ist wichtig:
int arr [10];