Frage zu rand() / srand()
-
Hallo liebe Community,
ich lerne momentan C mit dem Buch "C Einführung und professionelle Anwendung".
Der Autor benutzt des öfteren rand() und srand() um Zahlen zu erzeugen. Allerdings streuben sich mir die Haare wenn dabei von Zufallszahlen die Rede ist. So zufällig sind die Zahlen doch gar nicht? Je nach dem wie ich srand() initalisiere, spuckt rand() doch immer die selben Zahlen aus. Kann man da noch von einem Zufall sprechen? Vielleicht habe ich da auch irgendwas falsch verstanden.Liebe Grüße
spacej.
-
Echte Zufallszahlen zu liefern ist um einiges schwieriger - rand() erzeugt sogenannte Pseudo-Zufallszahlen (d.h. wenn du ohne weitere Initialisierung immer wieder rand() aufrufst, sehen die Ergebnisse halbwegs zufällig aus).
-
Der richtige Begriff lautet Pseudezufall. Für bestimmte Anwendungen (z.B. Simulationen) dicht genug an echtem Zufall, aber eben nicht für alle (z.B. Kryptografie).
-
Es werden keine echten Zufallszahlen erzeugt mit rand(). Du kannst ja mal nach Pseudozufallszahlen oder Pseudozufallsgenerator googeln.
-
Deswegen wird srand() auch nur einmal am Anfang des Programms mit der aktuellen Zeit aufgerufen.
srand( time(NULL) );
time(NULL)
gibt zumindest jede Sekunde einen anderen Wert zurück.
-
Ich danke euch vielmals, das hilft mir weiter.