Funktion zu schnell???
-
hi,
ich hab ne frage:
kann es sein, dass programme zu schnell für die rand-funktion sein können?
ich ruf die funktion 8x hintereinander in einer klasse auf, aber dann kommen auch immer die gleichen zufallszahlen...
-
srand(static_cast<unsigned>(std::time(NULL)));
-
darfst srand(time(0)) nur einmal bei programmstart aufrufen, auf keinen fall vor jedem mal rand()-benutzen.
-
Hey das war gemein :p
Das steht nun mal überall mit den Zufallszahlen, FAQ, z.B. hier: http://www.cppreference.com/stdother/rand.html oder auch hier: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_rand.asp
Gruß
-
Ja, du bist sicher zu schnell, ich glaube das Timeparameter braucht eine Sekunde oder Millisekunde zum Update.
-
Tc++H schrieb:
Ja, du bist sicher zu schnell, ich glaube das Timeparameter braucht eine Sekunde oder Millisekunde zum Update.
Was hat das Timeparameter mit rand zu tun? Oder meinst du: wenn man mit time( 0 ); mehrfach pro ms srand aufruft kann das nicht gehen?
-
User--- schrieb:
Tc++H schrieb:
Ja, du bist sicher zu schnell, ich glaube das Timeparameter braucht eine Sekunde oder Millisekunde zum Update.
Was hat das Timeparameter mit rand zu tun? Oder meinst du: wenn man mit time( 0 ); mehrfach pro ms srand aufruft kann das nicht gehen?
Da time() nur eine Auflösung von 1 Sekunde hat, liefert die Funktion jeweils
eine Sekunde lang den gleichen Wert.
Gleicher Wert => Gleiche Rand-Initialisierung => Gleiche Zufallszahlenfolge.
-
User--- schrieb:
Tc++H schrieb:
Ja, du bist sicher zu schnell, ich glaube das Timeparameter braucht eine Sekunde oder Millisekunde zum Update.
Was hat das Timeparameter mit rand zu tun? Oder meinst du: wenn man mit time( 0 ); mehrfach pro ms srand aufruft kann das nicht gehen?
pro sekunde sogar.
lass einfach mal folgendes laufen
int main(){ for(;;){ srand(time(0)); cout<<rand()<<endl; } }und dann folgendes
int main(){ srand(time(0)); for(;;){ cout<<rand()<<endl; } }
-
Schneller :p :p
-
h3h3
kewl, danke für die vielen antworten...wird bestimmt etw. dabei sein
-
Es ist wirklich so , dass die Time Funktion nur alle 1 millisekunde updatet. deswegen muß srand(time(NULL)); auch nur einmal aufgerufen werden, bei Programmstart
In der Schleife rufst du dann aber nur rand() auf und erhälst verschiedene Zufallszahlen!
-
Andreas XXL schrieb:
Es ist wirklich so , dass die Time Funktion nur alle 1 millisekunde updatet.
woher du nehmen "milli"?