rand () Toiminto C -kielellä

Rand Function C Language



C -kielellä, rivi() toimintoa käytetään Pseudo -numerogeneraattori (PRNG) . Rand () -funktion tuottamat satunnaisluvut eivät ole todella satunnaisia. Se on jakso, joka toistuu ajoittain, mutta ajanjakso on niin suuri, että voimme jättää sen huomiotta. The rivi() -toiminto muistaa siemenarvon, jota käytetään seuraavan satunnaisluvun ja seuraavan uuden siemenen laskemiseen. Tässä artikkelissa aiomme keskustella yksityiskohtaisesti siitä, miten satunnaislukuja voidaan luoda käyttämällä rivi() toiminto. Joten, aloitetaan!

Otsikkotiedosto:

stdlib.h







Syntaksi:

int rand (mitätön)



Palauta arvot:

Tämä toiminto palauttaa sarjan seuraavan näennäissatunnaisluvun. Numerosarjan aluearvo on välillä 0 ja RAND_MAX. RAND_MAX on kohdassa määritelty makro stdlib.h otsikkotiedosto, jonka arvo on suurin arvo, joka voidaan palauttaa rand () -funktiolla. RAND_MAX -arvo on suurempi, mutta vähintään 32767 C -kirjastoista riippuen.



//Esimerkki1.c

#sisältää
#sisältää

inttärkein()
{

inti;

printf ('10 Satunnaisluvut => n'');

varten(i=0;i<10;i++)
{
printf ('%d', rivi ());
}

printf ('' n'');
palata 0;
}


Esimerkissä 1.c kutsumme rand () -funktiota jokaisessa silmukan iteraatiossa ja tulostamme funktion palautusarvon. Rand () -funktion arvojärjestys on sama aina, kun suoritamme ohjelman. Rand -funktion siemen on oletusarvoisesti 1.





Voimme asettaa siemenen rand -toiminnolle käyttämällä srand () toiminto. Siemen voidaan asettaa vain kerran ja ennen ensimmäistä kertaa rivi() funktion kutsu.

srand () -funktio:

Otsikkotiedosto:

stdlib.h



Syntaksi:

int srand (allekirjoittamaton int seed)

Argumentit:

Tämä funktio kestää 1 argumentin

siemenet: Kokonaislukuarvo, jota käytetään siemenenä uudelle näennäissatunnaislukusarjalle.

Palauta arvot:

Ei mitään

//Esimerkki2.c

#sisältää
#sisältää
#sisältää

inttärkein()
{

inti;

srand ( aika (0));

printf ('10 Satunnaisluvut => n'');

varten(i=0;i<10;i++)
{
printf ('%d', rivi ());
}

printf ('' n'');
palata 0;
}


Esimerkissä2.c olemme käyttäneet srand () -funktiota rand () -funktion tuottaman satunnaislukusekvenssin alkutiedon asettamiseen. Joka kerta, kun ohjelma suoritetaan, luodaan eri sekvenssi. Srand (), aika (0) -funktio (ilmoitettu aika. h otsikkotiedostoa) käytetään siemenenä. Tämä aika (0) -toiminto palauttaa aikakauden (00:00:00, 1. tammikuuta 1970) kuluneen sekunnin määrän. Tämä voi silti tuottaa samat sekvenssit, jos suoritat ohjelman samalla sekunnilla.

//Esimerkki3.c

#sisältää
#sisältää
#sisältää

inttärkein()
{

inti;

srand ( aika (0));

printf ('10 Satunnaisluvut välillä 1 ja 10 => n'');

varten(i=0;i<10;i++)
{
printf ('%d',( rivi () %10) + 1);
}

printf ('' n'');
palata 0;
}


Esimerkissä 3.c olemme nähneet kuinka satunnaislukuja voidaan luoda välillä 1 ja 10.

//Esimerkki4.c

#sisältää
#sisältää
#sisältää

inttärkein()
{

inti,max,min;

printf ('Anna minimiarvo =>');
scanf ('%d', &min);
printf ('Anna enimmäisarvo =>');
scanf ('%d', &max);

jos(min>max)
{
printf ('Min. Arvo on suurempi kuin max. Arvo n'');
palata 0;
}

srand ( aika (0));


printf ('10 Satunnaisluvut välillä %d ja %d => n'',min,max);

varten(i=0;i<10;i++)
{
printf ('%d',( rivi () % (max-min+1)) +min);
}

printf ('' n'');
palata 0;
}


Esimerkissä4.c olemme ottaneet alueen käyttäjältä ja muodostaneet satunnaisluvun tällä alueella. Kaava on: rand ()% (max - min +1)) + min

//Esimerkki5.c

#sisältää
#sisältää
#sisältää

inttärkein()
{

inti;

srand ( aika (0));

printf ('10 Satunnaislukua välillä 0,0 ja 1,0 => n'');

varten(i=0;i<10;i++)
{
printf ('%f',((kellua) rivi () /RAND_MAX));
}

printf ('' n'');
palata 0;
}


Esimerkissä 5.c olemme nähneet kuinka voimme luoda satunnaislukuja kellukkeen 0,0 ja 1,0 välillä Kaava on: (float) rand () /RAND_MAX)

// Esimerkki6.c

#sisältää
#sisältää
#sisältää

inttärkein()
{

inti;
kelluamax,min;

printf ('Anna minimiarvo =>');
scanf ('%f', &min);
printf ('Anna enimmäisarvo =>');
scanf ('%f', &max);

jos(min>max)
{
printf ('Min. Arvo on suurempi kuin max. Arvo n'');
palata 0;
}

srand ( aika (0));

printf ('10 Satunnaisluvut välillä %f ja %f => n'',min,max);

varten(i=0;i<10;i++)
{
printf ('%f',min+ ((kellua) rivi () /(RAND_MAX/(max-min))));
}

printf ('' n'');
palata 0;
}


Esimerkissä 6.c olemme ottaneet alueen käyttäjältä ja luoneet satunnaisluvun tällä alueella (molemmat mukaan lukien). Kaava on: min + ((float) rand () /(RAND_MAX /(max - min)))

Johtopäätös:

Tässä artikkelissa olemme oppineet, miten satunnaislukuja voidaan luoda käyttämällä rivi() ja srand () toiminto. Rand -funktion luomien satunnaislukujen laadusta ei ole takeita, mutta se on riittävän hyvä satunnaiseen käyttöön.