rand () Funktion i C -sprog

Rand Function C Language



I C -sproget er række() funktion bruges til Pseudo Number Generator (PRNG) . De tilfældige tal, der genereres af funktionen rand (), er ikke rigtigt tilfældige. Det er en sekvens, der gentages periodisk, men perioden er så stor, at vi kan ignorere den. Det række() funktion fungerer ved at huske en seedværdi, der bruges til at beregne det næste tilfældige tal og det næste nye seed. I denne artikel vil vi i detaljer diskutere, hvordan tilfældige tal kan genereres ved hjælp af række() fungere. Så lad os komme i gang!

Header File:

stdlib.h







Syntaks:

int rand (ugyldig)



Returværdier:

Denne funktion returnerer det næste pseudo-tilfældige tal i serien. Intervallets værdi for nummerserien er mellem 0 og RAND_MAX. RAND_MAX er en makro defineret i stdlib.h header -fil, hvis værdi er den maksimale værdi, som kan vende tilbage med funktionen rand (). Værdien af ​​RAND_MAX er større, men ikke mindre end 32767 afhængigt af C -bibliotekerne.



// Eksempel1.c

#omfatte
#omfatte

intvigtigste()
{

intjeg;

printf ('10 Tilfældige tal => n');

til(jeg=0;jeg<10;jeg++)
{
printf ('%d', række ());
}

printf (' n');
Vend tilbage 0;
}


I eksempel1.c kalder vi funktionen rand () i hver iteration af loop og udskriver funktionens returværdi. Værdisekvensen for rand () -funktionen er den samme, hver gang vi kører programmet. Som standard er frøet til randfunktionen indstillet til 1.





Vi kan indstille frøet til randfunktionen ved hjælp af srand () fungere. Frøet kan kun sættes en gang, og før første gang række() funktionsopkald.

srand () funktion:

Header File:

stdlib.h



Syntaks:

int srand (usigneret int seed)

Argumenter:

Denne funktion tager 1 argument

frø: En heltalværdi, der bruges som frø til en ny serie pseudo-tilfældige tal.

Returværdier:

Ingen

//Eksempel2.c

#omfatte
#omfatte
#omfatte

intvigtigste()
{

intjeg;

srand ( tid (0));

printf ('10 Tilfældige tal => n');

til(jeg=0;jeg<10;jeg++)
{
printf ('%d', række ());
}

printf (' n');
Vend tilbage 0;
}


I eksempel2.c har vi brugt funktionen srand () til at indstille startfrøet for den tilfældige nummersekvens genereret af rand () -funktionen. Hver gang programmet køres, genereres en anden sekvens. I srand (), funktionen tid (0) (deklareret i tid. h header -fil) bruges som et frø. Denne funktion (0) returnerer antallet af sekunder, der er gået siden epoken (00:00:00, 1. januar 1970). Dette kan stadig producere de samme sekvenser, hvis du kører programmet i samme sekund.

// Eksempel3.c

#omfatte
#omfatte
#omfatte

intvigtigste()
{

intjeg;

srand ( tid (0));

printf ('10 Tilfældige tal mellem 1 og 10 => n');

til(jeg=0;jeg<10;jeg++)
{
printf ('%d',( række () %10) + 1);
}

printf (' n');
Vend tilbage 0;
}


I eksempel3.c har vi set, hvordan tilfældige tal kan genereres mellem 1 og 10.

// Eksempel4.c

#omfatte
#omfatte
#omfatte

intvigtigste()
{

intjeg,maks,min;

printf ('Indtast min værdi =>');
scanf ('%d', &min);
printf ('Indtast maks. Værdi =>');
scanf ('%d', &maks);

hvis(min>maks)
{
printf ('Min værdi er større end maks. Værdi n');
Vend tilbage 0;
}

srand ( tid (0));


printf ('10 Tilfældige tal mellem %d og %d => n',min,maks);

til(jeg=0;jeg<10;jeg++)
{
printf ('%d',( række () % (maks-min+1)) +min);
}

printf (' n');
Vend tilbage 0;
}


I eksempel4.c har vi taget intervallet fra brugeren og genereret et tilfældigt tal inden for dette område. Formlen er: rand ()% (max - min +1)) + min

//Eksempel5.c

#omfatte
#omfatte
#omfatte

intvigtigste()
{

intjeg;

srand ( tid (0));

printf ('10 Tilfældige tal mellem 0,0 og 1,0 => n');

til(jeg=0;jeg<10;jeg++)
{
printf ('%f',((flyde) række () /RAND_MAX));
}

printf (' n');
Vend tilbage 0;
}


I eksempel5.c har vi set, hvordan vi kan generere tilfældige tal mellem float 0.0 og 1.0 Formlen er: (float) rand () /RAND_MAX)

//Eksempel6.c

#omfatte
#omfatte
#omfatte

intvigtigste()
{

intjeg;
flydemaks,min;

printf ('Indtast min værdi =>');
scanf ('%f', &min);
printf ('Indtast maks. Værdi =>');
scanf ('%f', &maks);

hvis(min>maks)
{
printf ('Min værdi er større end maks. Værdi n');
Vend tilbage 0;
}

srand ( tid (0));

printf ('10 Tilfældige tal mellem %f og %f => n',min,maks);

til(jeg=0;jeg<10;jeg++)
{
printf ('%f',min+ ((flyde) række () /(RAND_MAX/(maks-min))));
}

printf (' n');
Vend tilbage 0;
}


I eksempel6.c har vi taget intervallet fra brugeren og genereret et tilfældigt tal inden for dette område (begge inklusive). Formlen er: min + ((float) rand () /(RAND_MAX /(max - min)))

Konklusion:

I denne artikel har vi lært, hvordan tilfældige tal kan genereres ved hjælp af række() og srand () fungere. Der er ingen garantier om kvaliteten af ​​de tilfældige tal, der genereres af randfunktionen, men det er godt nok til afslappet brug.