Wieso gibt rand() jedes Mal einen anderen Wert zurück?

Mit srand() wird ja die Zufallszahl initialisiert, aber wieso ist rand() dann jedes mal anders, wenn man zum Beispiel srand(time(0)) benutzt? Wenn ich eine beliebige Zahl statt dem time(0) verwende, werden ja auch immer die selben Zahlenfolgen zurückgegeben. Was ist jetzt anders, wenn die Systemzeit zum initialisieren verwendet wird?

Hallo Fragewurm,

Grundsätzlich erzeugt rand() nur Pseudozufallszahlen.

Im Prinzip ist das ein riesiger Ring aus einer Zahlenabfolge, irgendwann wiederholt sich die Zahlenfolge wieder.

Mit srand(x) erzeugt man einen Startpunkt auf diesem Ring.

Wenn man für x eine Konstante wählt erzeugt man auch immer den selben Startpunkt, was beim Testen Vorteile bringt.

Da die Zeit sich dauernd ändert, legt man mit srand(time(o)) jedes Mal einen anderen Startpunkt fest.

An Stelle von time() kann man auch einen anderen beliebigen Wert nehmen, wie z.B. die Anzahl Dateien auf der Festplatte. Wenn man da die Cookies und temporären Dateien mit hinzu nimmt, hat man auch bei jedem Start einen anderen Wert.

time() ist aber in jeder C-Umgebung vorhanden und liefert garantiert jede Sekunde einen anderen Wert.

MfG Peter(TOO)

und die formel hinter rand
siehe http://cplus.kompf.de/artikel/random.html
und wann es keine sinnvolle Zufallszahl mehr ist.