Rand() liefert immer die gleiche Zahl

Hallo,

Bei mir liefert die Funktion rand() trotz srand(time(NULL)) immer die gleiche Zahl, also in der Schleife selbst, zwar ist die Zahl bei jedem Programmstart anders, aber im Programm dann selbst immer die gleiche.

Codeausschnitt

...
#include
...
#include "sth.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
 ...
 while(!done)
 {
 while(SDL\_PollEvent(&event))
 {
 switch (event.type)
 {
 case SDL\_QUIT:
 {
 done = 1;
 break;
 }
 case SDL\_USEREVENT:
 {
 if (Hans.rect.x+Hans.rect.w 

Hallo,

Bei mir liefert die Funktion rand() trotz srand(time(NULL))
immer die gleiche Zahl, also in der Schleife selbst, zwar ist
die Zahl bei jedem Programmstart anders, aber im Programm dann
selbst immer die gleiche.

srand(…) immer nur *exakt* ein mal pro programmstart
aufrufen, und zwar *vor* der ersten rand()-Aufruf,
dann nie wieder.

Dein rand() liefert deshalb immer den gleichen Wert,
weil die aufeinanderfolgenden srand()-Aufrufe die rand()-
Engine immer mit dem selben Sekundewert (time(0)) starten.

Die „Zahl“, die bei srand(xx) übergeben wird, bedeutet nur
eine *Position* in einer vorgegebenen Sequenz von
Pseudozufallszahlen, diese (wiederkehrende) Sequenz hat
die Länge (Periode) 2^32.

Grüße

CMБ

Okay danke für die schnelle hilfe, werds gleich umschreiben.

Gruß Michael

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

bei mir liefert der MS Visual Studio 2005 Compiler auch immer annähernd die selben „Zufallszahlen“, trotz richtigem Seeden.
Brauche double Zufallszahlen.
Interessant ist, dass die Zahlen sich erst immer nach der 3. oder 4. Nachkommastelle unterscheiden und stetig wachsen…
Unter Linux GCC kein Problem gehabt…

srand();
for( unsigned int i=0; i 
Woran liegts?

Gruß Mike


> <small>[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]</small>