Header-Datei:
stdlib.h
Syntax:
int rand (ungültig)
Rückgabewerte:
Diese Funktion gibt die nächste Pseudozufallszahl in der Reihe zurück. Der Bereichswert der Zahlenreihe liegt zwischen 0 und RAND_MAX. RAND_MAX ist ein Makro, das in . definiert ist stdlib.h Header-Datei, deren Wert der maximale Wert ist, der von der Funktion rand() zurückgegeben werden kann. Der Wert von RAND_MAX ist je nach C-Bibliotheken größer, aber nicht kleiner als 32767.
//Beispiel1.c
#enthalten
#enthalten
inthauptsächlich()
{
intich;
druckenf ('10 Zufallszahlen => ');
zum(ich=0;ich<10;ich++)
{
druckenf ('%D ', Reihe ());
}
druckenf (' ');
Rückkehr 0;
}
In Beispiel1.c rufen wir die Funktion rand() in jeder Iteration der for-Schleife auf und geben den Rückgabewert der Funktion aus. Die Wertefolge der Funktion rand() ist bei jeder Ausführung des Programms gleich. Standardmäßig ist der Seed der Rand-Funktion auf 1 gesetzt.
Wir können den Seed für die rand-Funktion mit der srand() Funktion. Der Seed kann nur einmal und vor dem ersten Mal gesetzt werden Reihe() Funktionsaufruf.
srand()-Funktion:
Header-Datei:
stdlib.h
Syntax:
int srand (unsignierter int Seed)
Argumente:
Diese Funktion benötigt 1 Argument
Samen: Ein ganzzahliger Wert, der als Startwert für eine neue Reihe von Pseudozufallszahlen verwendet wird.
Rückgabewerte:
Keiner
//Beispiel2.c#enthalten
#enthalten
#enthalten
inthauptsächlich()
{
intich;
srand ( Zeit (0));
druckenf ('10 Zufallszahlen => ');
zum(ich=0;ich<10;ich++)
{
druckenf ('%D ', Reihe ());
}
druckenf (' ');
Rückkehr 0;
}
In Beispiel2.c haben wir die Funktion srand() verwendet, um den Anfangssaatwert der von der Funktion rand() erzeugten Zufallszahlenfolge zu setzen. Jedes Mal, wenn das Programm ausgeführt wird, wird eine andere Sequenz generiert. In srand(), time(0)-Funktion (deklariert in Zeit.h Header-Datei) wird als Seed verwendet. Diese Funktion time(0) gibt die Anzahl der seit der Epoche (00:00:00, 1. Januar 1970) verstrichenen Sekunden zurück. Dies kann immer noch die gleichen Sequenzen erzeugen, wenn Sie das Programm in derselben Sekunde ausführen.
#enthalten
#enthalten
#enthalten
inthauptsächlich()
{
intich;
srand ( Zeit (0));
druckenf ('10 Zufallszahlen zwischen 1 und 10=> ');
zum(ich=0;ich<10;ich++)
{
druckenf ('%D ',( Reihe () %10) + 1);
}
druckenf (' ');
Rückkehr 0;
}
In Beispiel3.c haben wir gesehen, wie Zufallszahlen zwischen 1 und 10 generiert werden können.
#enthalten
#enthalten
#enthalten
inthauptsächlich()
{
intich,max,Mindest;
druckenf ('Minwert eingeben => ');
scanf ('%D', &Mindest);
druckenf ('Maximalwert eingeben => ');
scanf ('%D', &max);
wenn(Mindest>max)
{
druckenf ('Min-Wert ist größer als Max-Wert ');
Rückkehr 0;
}
srand ( Zeit (0));
druckenf ('10 Zufallszahlen zwischen %d und %d=> ',Mindest,max);
zum(ich=0;ich<10;ich++)
{
druckenf ('%D ',( Reihe () % (max-Mindest+1)) +Mindest);
}
druckenf (' ');
Rückkehr 0;
}
In Beispiel4.c haben wir den Bereich vom Benutzer genommen und eine Zufallszahl innerhalb dieses Bereichs generiert. Die Formel lautet: Rand ()% (max - min +1)) + min
#enthalten
#enthalten
#enthalten
inthauptsächlich()
{
intich;
srand ( Zeit (0));
druckenf ('10 Zufallszahlen zwischen 0.0 und 1.0=> ');
zum(ich=0;ich<10;ich++)
{
druckenf ('%F ',((schweben) Reihe () /RAND_MAX));
}
druckenf (' ');
Rückkehr 0;
}
In Beispiel5.c haben wir gesehen, wie wir Zufallszahlen zwischen float 0.0 und 1.0 generieren können. Die Formel lautet: (float)rand() /RAND_MAX)
#enthalten
#enthalten
#enthalten
inthauptsächlich()
{
intich;
schwebenmax,Mindest;
druckenf ('Minwert eingeben => ');
scanf ('%F', &Mindest);
druckenf ('Maximalwert eingeben => ');
scanf ('%F', &max);
wenn(Mindest>max)
{
druckenf ('Min-Wert ist größer als Max-Wert ');
Rückkehr 0;
}
srand ( Zeit (0));
druckenf ('10 Zufallszahlen zwischen %f und %f => ',Mindest,max);
zum(ich=0;ich<10;ich++)
{
druckenf ('%F ',Mindest+ ((schweben) Reihe () /(RAND_MAX/(max-Mindest))));
}
druckenf (' ');
Rückkehr 0;
}
In Beispiel6.c haben wir den Bereich vom Benutzer genommen und eine Zufallszahl innerhalb dieses Bereichs generiert (beide inklusive). Die Formel lautet: min + ((float)rand() /(RAND_MAX/(max – min)))
Abschluss:
In diesem Artikel haben wir gelernt, wie man Zufallszahlen mit Hilfe der Reihe() und srand() Funktion. Es gibt keine Garantien für die Qualität der von der Rand-Funktion erzeugten Zufallszahlen, aber sie ist gut genug für den gelegentlichen Gebrauch.