Biblioteca matematica
1) Functiile din prima categorie sint descrise in <stdlib.h>
Nume
rand srand - generarea numerelor pseudo-aleatoare
Declaratie
int rand(void);
void srand(unsigned int seed);
Descriere
Functia rand returneaza un intreg pseudo-aleator intre si RAND_MAX (pentru majoritatea mediilor de programare C aceasta 525e43f constanta este egala cu valoarea maxima cu semn reprezentabila pe un cuvint al sistemului de calcul).
Functia srand initializeaza generatorul cu valoarea seed pentru o noua secventa de valori intregi pseudo-aleatoare care vor fi returnate de rand. Aceste secvente se repeta daca srand se apeleaza cu aceeasi valoare seed
Se obisnuieste ca generatorul sa fie initializat cu o valoare data de ceasul sistemului de calcul, ca in exemplul de mai jos:
#include <time.h>
srand(time(NULL));
Valoare returnata
Functia rand returneaza o valoare intre si RAND_MAX
Observatie
In lucrarea Numerical Recipes in C: The Art of Scientific Computing - William H Press, Brian P Flannery, Saul A Teukolsky, William T Vetterling / New York: Cambridge University Press, 1990 (1st ed, p 207), se face urmatorul comentariu:
'Daca doriti sa generati o valoare aleatoare intreaga intre 1 si 10, se recomanda sa folositi secventa
j=1+(int)(10.0*rand()/(RAND_MAX+1.0));
si nu o secventa de tipul
j=1+(int)(1000000.0*rand())%10;
care foloseste bitii de rang inferior.'
Tot in fisierul <stdlib.h> sint descrise si urmatoarele functii:
int abs(int i); valoare absoluta
long labs(long i); valoare absoluta
int atoi(char *s); conversie din ASCII in intreg
long atol(char *s); conversie din ASCII in intreg lung
double atof(char *s); conversie din ASCII in dubla
precizie
2) Functiile din a doua categorie sint descrise in fisierul <math.h>
double fabs(double x); valoare absoluta
double floor(double x); parte intreaga inferioara
double ceil(double x); parte intreaga superioara
double sqrt(double x);
double sin(double x); sin(x)
double cos(double x); cos(x)
double tan(double x); tg(x)
double asin(double x); arcsin(x)
double acos(double x); arccos(x)
double atan(double x); arctg(x) in [-p p
double atan2(double y, double x);
arctg(y/x) in [–p p
double exp(double x); ex
double log(double x); ln(x)
double pow(double x, double y); xy
double sinh(double x); sinh(x)
double cosh(double x); cosh(x)
double tanh(double x); tgh(x)
double ldexp(double x, int e); x 2e
double fmod(double x, double y); x modulo y
Functia fmod returneaza o valoare f definita astfel: x a y f
a este o valoare intreaga (data de x y) si 0 |f | < y; f are semnul lui x.
Urmatoarele doua functii returneaza doua valori: una este valoarea returnata de functie (de tip double), si cealalta returnata prin intermediul unui argument de tip pointer la int respectiv double
double frexp(double x, int *e);
Functia frexp desparte valoarea x in doua parti: o parte fractionara normalizata (f I [0.5,1)) si un exponent e. Daca x este 0 atunci f 0 si e 0. Valoarea returnata este f.
double modf(double x, double *n);
Functia modf desparte valoarea x in doua parti: o parte fractionara subunitara f si o parte intreaga n. Valorile f si n au acelasi semn ca si x. Valoarea returnata este f.
|