rand () Funció en llenguatge C.

Rand Function C Language



En llengua C, el fitxer fila () s'utilitza la funció Generador de pseudo números (PRNG) . Els números aleatoris generats per la funció rand () no són realment aleatoris. És una seqüència que es repeteix periòdicament, però el període és tan gran que podem ignorar-lo. El fila () La funció funciona recordant un valor de llavor que s’utilitza per calcular el següent número aleatori i la següent llavor nova. En aquest article, analitzarem detalladament com es poden generar nombres aleatoris mitjançant fila () funció. Comencem, doncs,

Fitxer de capçalera:

stdlib.h







Sintaxi:

int rand (buit)



Retorna els valors:

Aquesta funció retorna el següent número pseudo-aleatori de la sèrie. El valor de l'interval de la sèrie numèrica està entre 0 i RAND_MAX. RAND_MAX és una macro definida a stdlib.h fitxer de capçalera, el valor del qual és el valor màxim, que pot retornar mitjançant la funció rand (). El valor de RAND_MAX és major, però no inferior a 32767, segons les biblioteques C.



//Example1.c

#incloure
#incloure

intprincipal()
{

intjo;

printf ('10 nombres aleatoris => n');

per(jo=0;jo<10;jo++)
{
printf ('% d', fila ());
}

printf (' n');
tornar 0;
}


A Example1.c, anomenem la funció rand () en cada iteració de for loop i imprimim el valor de retorn de la funció. La seqüència de valors de la funció rand () és la mateixa cada vegada que executem el programa. Per defecte, la llavor de la funció rand està establerta a 1.





Podem configurar la llavor per a la funció rand mitjançant el fitxer srand () funció. La llavor només es pot establir una vegada i abans de la primera vegada fila () trucada de funció.

funció srand ():

Fitxer de capçalera:

stdlib.h



Sintaxi:

int srand (llavor int sense signar)

Arguments:

Aquesta funció té 1 argument

llavor: Valor enter utilitzat com a llavor per a una nova sèrie de nombres pseudo-aleatoris.

Retorna els valors:

Cap

//Example2.c

#incloure
#incloure
#incloure

intprincipal()
{

intjo;

srand ( temps (0));

printf ('10 nombres aleatoris => n');

per(jo=0;jo<10;jo++)
{
printf ('% d', fila ());
}

printf (' n');
tornar 0;
}


A Example2.c, hem utilitzat la funció srand () per establir la llavor inicial de la seqüència de nombres aleatoris generada per la funció rand (). Cada vegada que s’executa el programa, es genera una seqüència diferent. A srand (), funció time (0) (declarada a temps.h fitxer de capçalera) s’utilitza com a llavor. Aquesta funció de temps (0) retorna el nombre de segons transcorreguts des de l'època (00:00:00, 1 de gener de 1970). Això encara pot produir les mateixes seqüències si executeu el programa en el mateix segon.

//Example3.c

#incloure
#incloure
#incloure

intprincipal()
{

intjo;

srand ( temps (0));

printf ('10 Nombres aleatoris entre 1 i 10 => n');

per(jo=0;jo<10;jo++)
{
printf ('% d',( fila () %10) + 1);
}

printf (' n');
tornar 0;
}


A l'Exemple3.c hem vist com es poden generar nombres aleatoris entre 1 i 10.

//Example4.c

#incloure
#incloure
#incloure

intprincipal()
{

intjo,màx,mín;

printf ('Introduïu el valor mínim =>');
scanf ('% d', &mín);
printf ('Introduïu el valor màxim =>');
scanf ('% d', &màx);

si(mín>màx)
{
printf ('El valor mínim és superior al valor màxim n');
tornar 0;
}

srand ( temps (0));


printf ('10 Nombres aleatoris entre% d i% d => n',mín,màx);

per(jo=0;jo<10;jo++)
{
printf ('% d',( fila () % (màx-mín+1)) +mín);
}

printf (' n');
tornar 0;
}


A Example4.c hem pres l’interval de l’usuari i hem generat un número aleatori dins d’aquest interval. La fórmula és: rand ()% (max - min +1)) + min

//Example5.c

#incloure
#incloure
#incloure

intprincipal()
{

intjo;

srand ( temps (0));

printf ('10 Nombres aleatoris entre 0,0 i 1,0 => n');

per(jo=0;jo<10;jo++)
{
printf ('% f',((surar) fila () /RAND_MAX));
}

printf (' n');
tornar 0;
}


A l’exemple 5.c, hem vist com podem generar nombres aleatoris entre el flotant 0,0 i 1,0 La fórmula és: (float) rand () / RAND_MAX)

//Example6.c

#incloure
#incloure
#incloure

intprincipal()
{

intjo;
surarmàx,mín;

printf ('Introduïu el valor mínim =>');
scanf ('% f', &mín);
printf ('Introduïu el valor màxim =>');
scanf ('% f', &màx);

si(mín>màx)
{
printf ('El valor mínim és superior al valor màxim n');
tornar 0;
}

srand ( temps (0));

printf ('10 Nombres aleatoris entre% f i% f => n',mín,màx);

per(jo=0;jo<10;jo++)
{
printf ('% f',mín+ ((surar) fila () /(RAND_MAX/(màx-mín))));
}

printf (' n');
tornar 0;
}


A Example6.c, hem pres l’interval de l’usuari i hem generat un número aleatori dins d’aquest interval (tots dos inclosos). La fórmula és: min + ((float) rand () / (RAND_MAX / (max - min)))

Conclusió:

En aquest article, hem après com es poden generar nombres aleatoris mitjançant fila () i srand () funció. No hi ha garanties sobre la qualitat dels números aleatoris generats per la funció rand, però és prou bo per a ús casual.