rand () Pag-andar sa C Wika

Rand Function C Language



Sa wikang C, ang hilera () ginagamit ang pagpapaandar para sa Pseudo Number Generator(PRNG) . Ang mga random na numero na nabuo ng rand () na function ay hindi tunay na random. Ito ay isang pagkakasunud-sunod na paulit-ulit na umuulit, ngunit ang panahon ay napakalaki na maaari nating balewalain ito. Ang hilera () gumagana ang pagpapaandar sa pamamagitan ng pag-alala sa isang halaga ng binhi na ginagamit upang makalkula ang susunod na random na numero at ang susunod na bagong binhi. Sa artikulong ito, tatalakayin namin nang detalyado kung paano maaaring mabuo ang mga random na numero gamit ang hilera () pagpapaandar Kaya, magsimula na tayo!

Header File:

stdlib.h







Syntax:

int rand (walang bisa)



Mga halagang ibabalik:

Ibinabalik ng pagpapaandar na ito ang susunod na pseudo-random na numero sa serye. Ang saklaw na halaga ng serye ng numero ay nasa pagitan ng 0 at RAND_MAX. Ang RAND_MAX ay isang macro na tinukoy sa stdlib.h header file, na ang halaga ay ang maximum na halaga, na maaaring bumalik sa pamamagitan ng pag-andar ng rand (). Ang halaga ng RAND_MAX ay mas malaki ngunit hindi kukulangin sa 32767 depende sa mga aklatan ng C.



//Example1.c

# isama
# isama

intpangunahing()
{

intako;

printf ('10 Mga Random na Numero => n');

para sa(ako=0;ako<10;ako++)
{
printf ('% d', hilera ());
}

printf (' n');
bumalik ka 0;
}


Sa Halimbawa1.c, tinawag namin ang pag-andar ng rand () sa bawat pag-ulit para sa loop at i-print ang return halaga ng pagpapaandar. Ang pagkakasunud-sunod ng halaga ng pagpapaandar ng rand () ay pareho sa bawat pagpapatakbo namin ng programa. Bilang default, ang binhi ng pagpapaandar ng rand ay nakatakda sa 1.





Maaari nating itakda ang binhi para sa pag-andar ng rand gamit ang srand () pagpapaandar Ang binhi ay maaaring itakda nang isang beses lamang, at bago ang unang pagkakataon hilera () tawag sa pagpapaandar.

pagpapaandar ng srand ():

Header File:

stdlib.h



Syntax:

int srand (unsigned int seed)

Mga Pangangatwiran:

Ang pagpapaandar na ito ay tumatagal ng 1 argument

binhi: Isang halaga ng integer na ginamit bilang isang binhi para sa isang bagong serye ng mga pseudo-random na numero.

Mga halagang ibabalik:

Wala

//Example2.c

# isama
# isama
# isama

intpangunahing()
{

intako;

srand ( oras (0));

printf ('10 Mga Random na Numero => n');

para sa(ako=0;ako<10;ako++)
{
printf ('% d', hilera ());
}

printf (' n');
bumalik ka 0;
}


Sa Halimbawa2.c, ginamit namin ang pagpapaandar ng srand () upang itakda ang paunang binhi ng pagkakasunod-sunod ng random na numero na nabuo ng pag-andar ng rand (). Sa tuwing tatakbo ang programa, magkakaroon ng iba't ibang pagkakasunud-sunod. Sa srand (), oras (0) na pag-andar (idineklara sa oras.h header file) ay ginagamit bilang isang binhi. Ang pagpapaandar sa oras na ito (0) ay nagbabalik ng bilang ng mga segundo na lumipas mula noong panahon (00:00:00, Enero 1, 1970). Maaari pa rin itong makabuo ng parehong mga pagkakasunud-sunod kung patakbuhin mo ang programa sa parehong segundo.

//Example3.c

# isama
# isama
# isama

intpangunahing()
{

intako;

srand ( oras (0));

printf ('10 Mga Random na Numero sa pagitan ng 1 at 10 => n');

para sa(ako=0;ako<10;ako++)
{
printf ('% d',( hilera () %10) + 1);
}

printf (' n');
bumalik ka 0;
}


Sa Halimbawa3.c nakita namin kung paano maaaring mabuo ang mga random na numero sa pagitan ng 1 at 10.

//Example4.c

# isama
# isama
# isama

intpangunahing()
{

intako,max,min;

printf ('Ipasok ang Min halaga =>');
scanf ('% d', &min);
printf ('Ipasok ang Max na halaga =>');
scanf ('% d', &max);

kung(min>max)
{
printf ('Min na halaga ay mas malaki kaysa sa max na halaga n');
bumalik ka 0;
}

srand ( oras (0));


printf ('10 Mga Random na Numero sa pagitan ng% d at% d => n',min,max);

para sa(ako=0;ako<10;ako++)
{
printf ('% d',( hilera () % (max-min+1)) +min);
}

printf (' n');
bumalik ka 0;
}


Sa Halimbawa4.c kinuha namin ang saklaw mula sa gumagamit at nakabuo ng isang random na numero sa loob ng saklaw na ito. Ang pormula ay: rand ()% (max - min +1)) + min

//Example5.c

# isama
# isama
# isama

intpangunahing()
{

intako;

srand ( oras (0));

printf ('10 Mga Random na Numero sa pagitan ng 0.0 at 1.0 => n');

para sa(ako=0;ako<10;ako++)
{
printf ('% f',((lumutang) hilera () /RAND_MAX));
}

printf (' n');
bumalik ka 0;
}


Sa Halimbawa5.c, nakita namin kung paano makakabuo ng mga random na numero sa pagitan ng float 0.0 at 1.0 Ang pormula ay: (float) rand () / RAND_MAX)

//Example6.c

# isama
# isama
# isama

intpangunahing()
{

intako;
lumutangmax,min;

printf ('Ipasok ang Min halaga =>');
scanf ('% f', &min);
printf ('Ipasok ang Max na halaga =>');
scanf ('% f', &max);

kung(min>max)
{
printf ('Min na halaga ay mas malaki kaysa sa max na halaga n');
bumalik ka 0;
}

srand ( oras (0));

printf ('10 Mga Random na Numero sa pagitan ng% f at% f => n',min,max);

para sa(ako=0;ako<10;ako++)
{
printf ('% f',min+ ((lumutang) hilera () /(RAND_MAX/(max-min))));
}

printf (' n');
bumalik ka 0;
}


Sa Halimbawa6.c, kinuha namin ang saklaw mula sa gumagamit at nakabuo ng isang random na numero sa loob ng saklaw na ito (parehong kasama). Ang pormula ay: min + ((float) rand () / (RAND_MAX / (max - min)))

Konklusyon:

Sa artikulong ito, natutunan namin kung paano maaaring mabuo ang mga random na numero gamit ang hilera () at srand () pagpapaandar Walang mga garantiya tungkol sa kalidad ng mga random na numero na nabuo ng rand function, ngunit ito ay sapat na mahusay para sa kaswal na paggamit.