Zufallszahlen

Padawan

Erfahrenes Mitglied
Hallo Leute,
ich hatte folgenden Code gefunden, der ein Feld von int mit Zufallszahlen füllt:

C:
  srand(time(NULL));

  for(i=0; i<100; i++)
  {
     feld[i] = (int) (1000.0*rand()/(RAND_MAX));
     printf("%3d ", feld[i]);
  }

Wie Zufallszahlen in c erstellt werden ist an sich klar. Meine frage ist jedoch, was das Teilstück in Zeile 5 macht:

C:
(int) (1000.0*rand()/(RAND_MAX));

Bei mir erzeugt es Zahlen von 7 bis 989. Wenn man es mit %1000 macht, sollte es eigl. funktionieren, was es aber bei mir nicht passiert.

Hab die Seite nicht gefunden, von der ich es hab. :-( :-(


Ich hoffe ihr könnt mir Helfen.



Grüße
Padawan
 
Grundsätzlich gibt rand() einfach eine Zufallszahl zurück.
C++:
rand()%100;
Bei so einem Ausdruck erhälst du eine Zufallszahl von 0 bis 99, da kein anderer Rest bei einer Division durch 100 bleiben kann.

Zu deiner Frage: RAND_MAX ist der maximale Wert, den rand() zurückgeben kann. Du ermittelst also eine Zufallszahl, multiplizierst sie mit 1000 und anschließend dividierst du sie durch die größtmögliche Zahl, die rand() zurückgeben kann. Der Quotient wird dann in ein Int konvertiert, d.h. die Nachkommastellen werden weggelassen.
Im Endeffekt bekommst du bei deinem Beispiel hier also eine Zufallszahl zwischen 0 und 1000.

Lg
 
man könnte dann, stattdessen
C:
(int) rand()%1000;
schreiben, um eine Zahlenmenge von 0 bis 1000 von Ganzzahlen zu erzeugen?

lg
Padawan
 
Zurück