So erzeugen Sie Zufallszahlen in C-Programmierung

Eine mathematische Funktion in der C-Programmierung, die relativ einfach zu erfassen ist die Funktion rand (). Es erzeugt Zufallszahlen. Obwohl das mag albern, es ist die Grundlage für fast jemals erfunden jedem Computerspiel. Zufallszahlen sind eine große Sache in der Programmierung.

Menu

Ein Computer kann echte Zufallszahlen zu erzeugen. Stattdessen erzeugt es so genannter Pseudo--Zufallszahlen. Das ist, weil die Bedingungen im Inneren des Computers kann repliziert werden. Daher spotten ernsthafte Mathematiker, dass jeder Wert ein Computer zufällig nennt, ist kein wirklich Zufallszahl. Können Sie hören, wie sie spotten?

Wie Zufallszahlen zu erzeugen,

Die Funktion rand () ist die einfachste von C die Zufallszahlen Funktionen. Es erfordert die stdlib.h Header-Datei, und husten einen int-Wert auf, die angeblich zufällig ist. Nun, das ist Zufall Beispielcode demonstriert.

JETZT, DASS RANDOM

# include # include int main () {int r, a, b-puts ( "100 Zufalls Numbers")-for(a=0-alt;20-a++){for(b=0-blt;5-b++){r=rand()-printf("%dt",r)-}putchar('n')-}return(0)-}

Nun verwendet Das ist Zufall eine verschachtelte for-Schleife 100 Zufallswerte angezeigt werden soll. Die Funktion rand () in Zeile 13 erzeugt die Werte. Die Funktion printf () in Zeile 14 zeigt die Werte, die durch die% d Umwandlungszeichen verwenden, die int-Werte anzeigt.

Übung 1: Erstellen Sie ein neues Projekt, indem Sie den Quellcode mit in nun gezeigt, das ist Zufall. Erstellen und ausführen 100 zufällige Werte zu sehen.

Übung 2: Ändern Sie den Code so, dass alle angezeigten Werte im Bereich von 0 bis 20 sind.

Hier ein Tipp für Jetzt ist Das Random: Verwenden Sie das Modul Zuweisungsoperator den Bereich der Zufallszahlen zu begrenzen. Das Format sieht wie folgt aus:

r% =n-

r ist die Zahl der rand () Funktion zurückgegeben. % = Ist der Modul Zuweisungsoperator. n die Bereichsgrenze, plus 1. Nach der vorangegangenen Aussage zurückgegebenen Werte sind im Bereich von 0 bis n-1. Wenn Sie also Werte zwischen 1 und 100 generieren möchten, würden Sie diese Formel verwenden:

Wert = (r% 100) + 1-

Wie die Zufälligkeit der numbersin C-Programmierung zu erhöhen

Nur um einen Kredit zu den hochnäsigen Mathematiker geben, die behaupten, dass Computer Pseudozufallszahlen zu erzeugen, führen Sie das Programm, das Sie aus Übung 2 erzeugt die Ausgabe zu beachten. Führen Sie das Programm erneut. Sehen Sie alles bekannt vor?

Die Funktion rand () ist gut in eine ganze Reihe von Zufallswerten zu erzeugen, aber sie sind berechenbar Werte. Um die Ausgabe weniger vorhersehbar zu machen, müssen Sie Samen der Zufallszahlengenerator. Das ist mit dem srand () Funktion.

Wie die rand () Funktion, die srand () Funktion erfordert die stdlib.h Header, an der Linie 2 in noch mehr Zufälligkeit gezeigt. Die Funktion erfordert einen unsigned int Wert, Samen, die bei Line 6. Die scanf () Funktion in Zeile 10 im Wert ohne Vorzeichen liest unter Verwendung der% u Platzhalter deklariert wird. Dann wird die srand () Funktion verwendet, um den Ausgangswert in Zeile 11.

NOCH MEHR ZUFÄLLIGKEIT

# include # include int main () {unsigned Samen-int r, a, b-printf ( "Geben Sie eine Zufallszahl Samen: ")-scanf("%u",seed)-srand(seed)-for(a=0-alt;20-a++){for(b=0-blt;5-b++){r=rand()-printf("%dt",r)-}putchar('n')-}return(0)-}

Die Funktion rand () ist in Zeile 16, obwohl die Ergebnisse nun verwendet werden, auf dem Saatgut basiert, das gesetzt wird, wenn das Programm läuft.

Übung 3Erstellen Sie ein neues Projekt, den Quellcode mit noch mehr Zufälligkeit gezeigt. Baue es. Führen Sie das Programm ein paar Mal, versuchen verschiedene Startwerte. Der Ausgang ist jedes Mal anders.

Ach, die Zufallswerte, die generiert werden, sind noch vorhersehbar, wenn Sie die gleiche Startnummer eingeben. In der Tat, wenn der Wert 1 als Saatgut verwendet wird, sehen Sie die gleiche # 147 Zufalls # 148- Werte, die Sie in Übung 1 gesehen haben, wenn man nicht einmal srand verwendet haben ()!

Es muss einen besseren Weg zu sein.

Der beste Weg, um einen Zufallszahlengenerator zu schreiben, ist nicht um den Benutzer zu bitten, einen Samen zu geben, sondern einen Samen aus anderen Ländern zu holen. Mehr Truly Random als je zuvor, wird der Startwert aus dem Systemtakt gezogen durch die Zeit () Funktion.

Gelegentlichere WIRKLICH ALS ÜBERHAUPT

# include # include # include int main () {int r,a,b-srand((unsigned)time(NULL))-for(a=0-alt;20-a++){for(b=0-blt;5-b++){r=rand()-printf("%dt",r)-}putchar('n')-}return(0)-}

Die Zeit () Funktion liefert Informationen über die aktuelle Tageszeit, einen Wert, der sich ständig verändernden ist. Das NULL-Argument hilft, einige Probleme zu lösen, aber die Zeit () gibt ein sich ständig ändernden Wert.

Der (unsigned) Teil der Anweisung wird sichergestellt, dass der Wert durch die Zeit () Funktion ist eine ganze Zahl ohne Vorzeichen zurückgegeben. Das ist eine Technik, bekannt als typecasting.

Das Endergebnis ist, dass die Funktion srand () einen Startwert übergeben wird, mit freundlicher Genehmigung von der Funktion time (), und das Ergebnis ist, dass die Funktion rand () Werte erzeugt, die mehr zufällig sind, als Sie sonst bekommen würde.

Übung 4: Geben Sie den Quellcode von mehr Truly Random als je zuvor und das Projekt. Führen Sie es ein paar Mal, um sicherzustellen, dass die Zahlen so zufällig wie der Computer sie bekommen können.

Menü