Welchen Output bekommt man von...
rand()stdlib.h und time.h werden benötigt!
srand(time(NULL)) definiert den Startwert abhängig von der aktuellen Zeit.
rand() liefert eine ganzzahlige Zufallszahl aus 0 bis RAND_MAX (meist 32767).
MIN ist die kleinstmögliche Zahl die man bekommen will.
MAX ist die größtmögliche Zahl die man bekommen will.
Positiv: rand() % (MAX - MIN + 1) + MIN
Negativ: rand() % (-MIN - (-MIN) + 1) - MIN
float)Positiv: ((float) rand() / RAND_MAX) * (MAXf - MINf + 1.0f) + MINf
Negativ: ((float) rand() / RAND_MAX) * (-MINf - (-MAXf) + 1.0f) - MINf
double)Positiv: ((double) rand() / RAND_MAX) * (MAX - MIN + 1.0) + MIN
Negativ: ((double) rand() / RAND_MAX) * (-MIN - (-MAX) + 1.0) - MIN
Beispiel 1
rand() % (10 - 1 + 1) + 1
Hier bekommen wir eine positive ganzzahllige Zufallszahl von 1 bis 10 raus. Am leichtesten merkt man es sich als einen Zahlenstrahl:
rand() % (10 - 1 + 1) + 1
Hier rechnen die Anzahl von Zahlen zwischen 1 - 10 aus.
rand() % (10 - 1 + 1) + 1
Dann bewegen wir den Anfang unseres Bereiches um 1.
Beispiel 2
((double) rand() / RAND_MAX) * (-0.5 - (-0.2)) - 0.5
Hier bekommen wir eine negative Gleitkomma Zufallszahl von -0.5 bis -0.2 raus. Nochmal machen wir einen Zahlenstrahl:
((double) rand() / RAND_MAX) * (-0.5 - (-0.2)) - 0.5
Mit (double) wandeln wir die generierte Zahl von rand() in eine Gleitkommazahl um.
((double) rand() / RAND_MAX) * (-0.5 - (-0.2)) - 0.5
Mit / RAND_MAX stellen wir sicher, dass die generierte Zahl zwischen 0.0 - 1.0 liegt.
((double) rand() / RAND_MAX) * (-0.5 - (-0.2)) - 0.5
Hier rechnen wir die Anzahl von Zahlen zwischen -0.2 und -0.5.
((double) rand() / RAND_MAX) * (-0.5 - (-0.2)) - 0.5
Hier bewegen wir den Anfang unseres Bereiches um 0.5.