rand()-Funktion in C-Sprache

Rand Function C Language



In der C-Sprache ist die Reihe() Funktion wird verwendet für Pseudonummerngenerator (PRNG) . Die von der Funktion rand() generierten Zufallszahlen sind nicht wirklich zufällig. Es ist eine Sequenz, die sich periodisch wiederholt, aber die Periode ist so groß, dass wir sie ignorieren können. Die Reihe() Funktion funktioniert, indem sie sich an einen Startwert erinnert, der verwendet wird, um die nächste Zufallszahl und den nächsten neuen Startwert zu berechnen. In diesem Artikel werden wir im Detail diskutieren, wie Zufallszahlen mit Hilfe der generiert werden können Reihe() Funktion. Also lasst uns anfangen!

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.

//Beispiel3.c

#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.

//Beispiel4.c

#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

//Beispiel5.c

#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)

//Beispiel6.c

#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.