Erstellung von Zufallszahlen
srand(time(NULL)) definiert den Startwert zum Erzeugen der Zufallszahl abhängig von der aktuellen Zeit.
rand() liefert eine ganzzahlige Zufallszahl aus dem Bereich 0 bis RAND_MAX (meist 32767).
RAND_MAX ist definiert als das Maximum, dass von rand() erzeugt werden kann.
Ganze Zahlen
Über den Modulo-Operator (%) kann man einen Zahlenbereich eingrenzen.
Positiv
Um einen Bereich von Zahlen auszurechnen, rechnen wir den Höchstwert minus den Mindestwert plus eins. z.B.: (10 - 2 + 1)
Damit jetzt unsere Zufallszahl beim Mindestwert anfängt, rechnen wir plus den Mindestwert.
Das Endergebnis sieht dann so aus:
rand() % (10 - 2 + 1) + 2
Negativ
Bei Negativen Zahlen machen wir ebenfalls das gleiche:
rand() % (-2 - (-10) + 1) + (-10)
Gleitkommazahlen
Durch Multiplikation (*) kann man diesen Bereich eingrenzen.
Da wir eine Zahl von 0.0 - 1.0 von rand() haben wollen, dividieren wir das Ergebnis von rand() mit RAND_MAX.
Ebenfalls müssen wir den Datentyp den wir von rand() haben wollen in Klammern vor rand() schreiben, dieser Prozess heißt Type Casting.
Positiv
Um einen Bereich von Zahlen auszurechnen, rechnen wir den Höchstwert minus den Mindestwert. z.B.: (10.25 - 2.5)
Damit jetzt unsere Zufallszahl beim Mindestwert anfängt, rechen wir plus den Mindestwert.
Das Endergebnis sieht dann so aus:
((float) rand() / RAND_MAX) * (10.25 - 2.5) + 2.5
Negativ
Ebenfalls machen wir es gleich hier:
((float) rand() / RAND_MAX) * ((-2.5) - (-10.25)) + (-10.25)