Welchen Output bekommt man von...

Zufallszahlen mit rand()

Grundbausteine

Code

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).

In Beispielen

MIN ist die kleinstmögliche Zahl die man bekommen will.

MAX ist die größtmögliche Zahl die man bekommen will.

Musterbeispiele

Ganzzahlige Zufallszahlen

Positiv: rand() % (MAX - MIN + 1) + MIN

Negativ: rand() % (-MIN - (-MIN) + 1) - MIN

Gleitkomma Zufallszahlen (float)

Positiv: ((float) rand() / RAND_MAX) * (MAXf - MINf + 1.0f) + MINf

Negativ: ((float) rand() / RAND_MAX) * (-MINf - (-MAXf) + 1.0f) - MINf

Gleitkomma Zufallszahlen (double)

Positiv: ((double) rand() / RAND_MAX) * (MAX - MIN + 1.0) + MIN

Negativ: ((double) rand() / RAND_MAX) * (-MIN - (-MAX) + 1.0) - MIN

Beispiele mit Erklärungen

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:

Zahlenstrahl
rand() % (10 - 1 + 1) + 1

Hier rechnen die Anzahl von Zahlen zwischen 1 - 10 aus.

Zahlenstrahl
rand() % (10 - 1 + 1) + 1

Dann bewegen wir den Anfang unseres Bereiches um 1.

Zahlenstrahl

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:

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.

Zahlenstrahl
((double) rand() / RAND_MAX) * (-0.5 - (-0.2)) - 0.5

Hier bewegen wir den Anfang unseres Bereiches um 0.5.

Zahlenstrahl