rand() Functie in C Taal

Rand Function C Language



In de C-taal, de rij() functie wordt gebruikt voor: Pseudo-nummergenerator (PRNG) . De willekeurige getallen die door de functie rand() worden gegenereerd, zijn niet echt willekeurig. Het is een reeks die zich periodiek herhaalt, maar de periode is zo groot dat we hem kunnen negeren. De rij() functie werkt door een seed-waarde te onthouden die wordt gebruikt om het volgende willekeurige getal en de volgende nieuwe seed te berekenen. In dit artikel gaan we in detail bespreken hoe willekeurige getallen kunnen worden gegenereerd met behulp van de rij() functie. Dus laten we beginnen!

Header-bestand:

stdlib.h







Syntaxis:

int rand (ongeldig)



Retourwaarden:

Deze functie retourneert het volgende pseudo-willekeurige getal in de reeks. De bereikwaarde van de getallenreeks ligt tussen 0 en RAND_MAX. RAND_MAX is een macro gedefinieerd in stdlib.h header-bestand, waarvan de waarde de maximale waarde is, die kan worden geretourneerd door de functie rand(). De waarde van RAND_MAX is groter maar niet minder dan 32767, afhankelijk van de C-bibliotheken.



//Voorbeeld1.c

#erbij betrekken
#erbij betrekken

inthoofd()
{

intl;

printf ('10 willekeurige getallen =>N');

voor(l=0;l<10;l++)
{
printf ('%NS ', rij ());
}

printf ('N');
opbrengst 0;
}


In Voorbeeld1.c roepen we de functie rand() in elke iteratie van for-lus aan en drukken de geretourneerde waarde van de functie af. De waardenreeks van de functie rand() is hetzelfde elke keer dat we het programma uitvoeren. Standaard is de seed van de randfunctie ingesteld op 1.





We kunnen het begin voor de randfunctie instellen met behulp van de srand() functie. Het zaad kan slechts één keer worden ingesteld, en vóór de eerste keer rij() functie oproep.

srand() functie:

Header-bestand:

stdlib.h



Syntaxis:

int srand (unsigned int seed)

Argumenten:

Deze functie heeft 1 argument

zaad: Een geheel getal dat wordt gebruikt als basis voor een nieuwe reeks pseudo-willekeurige getallen.

Retourwaarden:

Geen

//Voorbeeld2.c

#erbij betrekken
#erbij betrekken
#erbij betrekken

inthoofd()
{

intl;

srand ( tijd (0));

printf ('10 willekeurige getallen =>N');

voor(l=0;l<10;l++)
{
printf ('%NS ', rij ());
}

printf ('N');
opbrengst 0;
}


In Voorbeeld2.c hebben we de functie srand() gebruikt om de initiële seed in te stellen van de reeks willekeurige getallen die wordt gegenereerd door de functie rand(). Elke keer dat het programma wordt uitgevoerd, wordt een andere volgorde gegenereerd. In srand(), functie time(0) (aangegeven in tijd.h header-bestand) wordt gebruikt als een seed. Deze functie time(0) retourneert het aantal seconden dat is verstreken sinds het tijdperk (00:00:00, 1 januari 1970). Dit kan nog steeds dezelfde reeksen opleveren als u het programma in dezelfde seconde uitvoert.

//Voorbeeld3.c

#erbij betrekken
#erbij betrekken
#erbij betrekken

inthoofd()
{

intl;

srand ( tijd (0));

printf ('10 willekeurige getallen tussen 1 en 10=>N');

voor(l=0;l<10;l++)
{
printf ('%NS ',( rij () %10) + 1);
}

printf ('N');
opbrengst 0;
}


In Voorbeeld3.c hebben we gezien hoe willekeurige getallen tussen 1 en 10 kunnen worden gegenereerd.

//Voorbeeld4.c

#erbij betrekken
#erbij betrekken
#erbij betrekken

inthoofd()
{

intl,max,min;

printf ('Voer Min waarde in => ');
scanf ('%NS', &min);
printf ('Voer Max waarde in => ');
scanf ('%NS', &max);

indien(min>max)
{
printf ('Min waarde is groter dan max waarde'N');
opbrengst 0;
}

srand ( tijd (0));


printf ('10 willekeurige getallen tussen %d en %d=>N',min,max);

voor(l=0;l<10;l++)
{
printf ('%NS ',( rij () % (max-min+1)) +min);
}

printf ('N');
opbrengst 0;
}


In Voorbeeld4.c hebben we het bereik van de gebruiker genomen en een willekeurig getal binnen dit bereik gegenereerd. De formule is: rand ()% (max - min +1)) + min

//Voorbeeld5.c

#erbij betrekken
#erbij betrekken
#erbij betrekken

inthoofd()
{

intl;

srand ( tijd (0));

printf ('10 willekeurige getallen tussen 0.0 en 1.0=>N');

voor(l=0;l<10;l++)
{
printf ('%F ',((vlot) rij () /RAND_MAX));
}

printf ('N');
opbrengst 0;
}


In Voorbeeld5.c hebben we gezien hoe we willekeurige getallen tussen float 0.0 en 1.0 kunnen genereren. De formule is: (float)rand() /RAND_MAX)

//Voorbeeld6.c

#erbij betrekken
#erbij betrekken
#erbij betrekken

inthoofd()
{

intl;
vlotmax,min;

printf ('Voer Min waarde in => ');
scanf ('%F', &min);
printf ('Voer Max waarde in => ');
scanf ('%F', &max);

indien(min>max)
{
printf ('Min waarde is groter dan max waarde'N');
opbrengst 0;
}

srand ( tijd (0));

printf ('10 willekeurige getallen tussen %f en %f =>N',min,max);

voor(l=0;l<10;l++)
{
printf ('%F ',min+ ((vlot) rij () /(RAND_MAX/(max-min))));
}

printf ('N');
opbrengst 0;
}


In Voorbeeld6.c hebben we het bereik van de gebruiker overgenomen en een willekeurig getal gegenereerd binnen dit bereik (beide inclusief). De formule is: min + ((float)rand() /(RAND_MAX/(max – min)))

Conclusie:

In dit artikel hebben we geleerd hoe willekeurige getallen kunnen worden gegenereerd met behulp van de rij() en srand() functie. Er zijn geen garanties over de kwaliteit van de willekeurige getallen die door de randfunctie worden gegenereerd, maar het is goed genoeg voor incidenteel gebruik.