rand () Funcție în limbaj C.

Rand Function C Language



În limbajul C, rand() funcția este utilizată pentru Generator de pseudo numere (PRNG) . Numerele aleatorii generate de funcția rand () nu sunt cu adevărat aleatorii. Este o secvență care se repetă periodic, dar perioada este atât de mare încât o putem ignora. The rand() funcția funcționează prin amintirea unei valori seed care este utilizată pentru a calcula următorul număr aleatoriu și următoarea nouă seed. În acest articol, vom discuta în detaliu cum pot fi generate numerele aleatorii folosind rand() funcţie. Deci sa începem!

Fișier antet:

stdlib.h







Sintaxă:

int rand (nul)



Returnează valorile:

Această funcție returnează următorul număr pseudo-aleatoriu din serie. Valoarea intervalului seriei numerice este cuprinsă între 0 și RAND_MAX. RAND_MAX este o macro definită în stdlib.h fișier antet, a cărui valoare este valoarea maximă, care poate reveni prin funcția rand (). Valoarea RAND_MAX este mai mare, dar nu mai mică de 32767, în funcție de bibliotecile C.



//Exemplu1.c

#include
#include

intprincipal()
{

inteu;

printf ('10 Numere aleatoare => n');

pentru(eu=0;eu<10;eu++)
{
printf („% d”, rand ());
}

printf (' n');
întoarcere 0;
}


În Exemplul 1.c, apelăm funcția rand () în fiecare iterație a buclei for și imprimăm valoarea returnată a funcției. Secvența valorică a funcției rand () este aceeași de fiecare dată când rulăm programul. În mod implicit, seminția funcției rand este setată la 1.





Putem seta semințele pentru funcția rand folosind srand () funcţie. Sămânța poate fi setată o singură dată și înainte de prima dată rand() apel de funcție.

funcția srand ():

Fișier antet:

stdlib.h



Sintaxă:

int srand (semințe int nesemnate)

Argumente:

Această funcție acceptă 1 argument

sămânță: O valoare întreagă utilizată ca sămânță pentru o nouă serie de numere pseudo-aleatorii.

Returnează valorile:

Nici unul

//Exemplu2.c

#include
#include
#include

intprincipal()
{

inteu;

srand ( timp (0));

printf ('10 Numere aleatoare => n');

pentru(eu=0;eu<10;eu++)
{
printf („% d”, rand ());
}

printf (' n');
întoarcere 0;
}


În Exemplul 2.c, am folosit funcția srand () pentru a seta sămânța inițială a secvenței de numere aleatorii generate de funcția rand (). De fiecare dată când programul este rulat, se generează o secvență diferită. În srand (), funcția time (0) (declarată în timp.h fișier antet) este folosit ca o semință. Această funcție de timp (0) returnează numărul de secunde scurs de la epocă (00:00:00, 1 ianuarie 1970). Acest lucru poate produce aceleași secvențe dacă rulați programul în aceeași secundă.

//Exemplu3.c

#include
#include
#include

intprincipal()
{

inteu;

srand ( timp (0));

printf ('10 Numere aleatorii între 1 și 10 => n');

pentru(eu=0;eu<10;eu++)
{
printf („% d”,( rand () %10) + 1);
}

printf (' n');
întoarcere 0;
}


În Exemplul 3.c am văzut cum pot fi generate numerele aleatorii între 1 și 10.

//Exemplu4.c

#include
#include
#include

intprincipal()
{

inteu,max,min;

printf ('Introduceți valoarea minimă =>');
scanf („% d”, &min);
printf („Introduceți valoarea maximă =>”);
scanf („% d”, &max);

dacă(min>max)
{
printf („Valoarea minimă este mai mare decât valoarea maximă n');
întoarcere 0;
}

srand ( timp (0));


printf ('10 Numere aleatorii între% d și% d => n',min,max);

pentru(eu=0;eu<10;eu++)
{
printf („% d”,( rand () % (max-min+1)) +min);
}

printf (' n');
întoarcere 0;
}


În Exemplul 4.c am luat intervalul de la utilizator și am generat un număr aleatoriu în acest interval. Formula este: rand ()% (max - min +1)) + min

//Exemplu5.c

#include
#include
#include

intprincipal()
{

inteu;

srand ( timp (0));

printf ('10 Numere aleatorii între 0,0 și 1,0 => n');

pentru(eu=0;eu<10;eu++)
{
printf („% f”,((pluti) rand () /RAND_MAX));
}

printf (' n');
întoarcere 0;
}


În Exemplul 5.c, am văzut cum putem genera numere aleatorii între float 0.0 și 1.0 Formula este: (float) rand () / RAND_MAX)

//Exemplu6.c

#include
#include
#include

intprincipal()
{

inteu;
plutimax,min;

printf ('Introduceți valoarea minimă =>');
scanf („% f”, &min);
printf („Introduceți valoarea maximă =>”);
scanf („% f”, &max);

dacă(min>max)
{
printf („Valoarea minimă este mai mare decât valoarea maximă n');
întoarcere 0;
}

srand ( timp (0));

printf ('10 Numere aleatorii între% f și% f => n',min,max);

pentru(eu=0;eu<10;eu++)
{
printf („% f”,min+ ((pluti) rand () /(RAND_MAX/(max-min))));
}

printf (' n');
întoarcere 0;
}


În Exemplul 6.c, am luat intervalul de la utilizator și am generat un număr aleatoriu în acest interval (ambele inclusiv). Formula este: min + ((float) rand () / (RAND_MAX / (max - min)))

Concluzie:

În acest articol, am aflat cum pot fi generate numerele aleatorii folosind rand() și srand () funcţie. Nu există garanții cu privire la calitatea numerelor aleatorii generate de funcția rand, dar este suficient de bună pentru utilizare casuală.