[erledigt] srand() bei Zufallszahlen
-
Hallo liebe Forengemeinde,
ich habe gerade folgendes Problem, bei dem ich einen kleinen Tipp benötige

Ich möchte eine große Zahl von Zufallszahlen über rand() produzieren.
Zunächst muss man ja den Zufallsgenerator mit srand() initialisieren, wobei ich im Moment time(NULL) an srand() übergeben habe. Lasse ich nun in einer Schleife viele Zahlen hintereinander produzieren, sind sie alle gleich!Das ist ja auch verständlich, weil sie alle von derselben "Zeit" hergestellt wurden. Ist eine Sekunde vergangen, habe ich eine neue Zahl.
Nun würde ich gerne wisen, wie ihr das so macht, wenn ihr viele verschiedene Zufallszahlen in kurzer Zeit erzeugen wollt?Danke im voraus

-
srand(time(0)) NICHT innerhalb der Schleife dauernd aufrufen. Einmal am Anfang der main() reicht völlig.
-
Ah wie dumm von mir

Die srand()Funktion war innerhalb einer Funktion, die einen Zufallsstring erzeugt. In einer Schleife habe ich dann diese Funktion öfters aufgerufen und so auch srand andauernd ...
Nya habe es jetzt in meiner Funktion so gelöst:static bool once=true; if(once) srand(time(0)); once=false;Ein cooler Trick mit den statischen Variablen. Kann wie in diesem Fall echt hilfreich sein.
Danke nochmal für den Denkanstoß

-
aber static ist eig wo anders für
setzt doch einfach srand vor die schleife
-
Ist zwar eigentlich (in dem Fall) egal aber
if(once) srand(time(0)); once=false;entspricht
if (once) { srand(time(0)); } once = false;D.h. die Zuweisung wird jedesmal ausgeführt.
-
Ja so genau nehm ich das jetzt nicht... Das soll ja nicht iwie veröffentlicht werden, ist nur sone kleine Funktion für mich aber trotzdem danke für die Antwort.
P.S. den "Trick" habe ich aus Arnold Willemer´s Coding for Fun mit C++
Dort wird auch jedesmal die Zuweisung durchgeführt. Scheint also nicht allzu schlimm zu sein
-
Dann mach doch lieber so etwas:
namespace random_number_init { static int foo(){srand(time(0));return 0;} static int bar=foo(); }Schreib das in irgendeine Headerdatei und füge diese deinem Projekt hinzu.