Zufallszahlen doppelt
-
Hallo Gemeinde,
ich habe ein Problem mit Zufallszahlen. Ich möchte für die Variable X und Y jeweils 100 Zufallszahlen generieren.
Jeoch bekommme ich 50 mal die selbe und ich komme nicht dahinter woran das liegen kann.
std::vector<Bot01*> CScenario::execute() { srand((unsigned)time(NULL)); std::vector<Bot*> botMove; for (int i=0; i<m_botId.size(); i++) { int randomX = rand() % m_x; int randomY = rand() % m_y; Bot01* tmpBot = NULL; tmpBot = m_aimap.getBot(m_botId.at(i)); move(randomX, randomY, tmpBot->getUniqueBotId()); botMove.push_back(tmpBot); } return botMove; }Es sind 100 Durchläufe und mein Ergebniss ist:
50 mal
x: 175 y: 148
und 50 mal
x: 178 y: 96> Die werde ändern sich natürlich bei jedem neustart des Programms
Ich habe auch:
srand((unsigned)time(NULL));in die for-schleife gepackt, jedoch kommt da das selbe raus...
Kann mir jemand sagen woran das liegt?
so long
jd
-
die frage wurde schon 100mal beantwortet
-
Setzt einer deiner Methodenaufrufe in der Schleife den Startwert auf einen bestimmten wert z.B. srand(0)?
Woher weißt du, dass es 50x dieselben Werte sind? Wie gibst du die Werte aus bzw. wie überprüfst du sie? Direkt nachdem sie erzeugt wurden?
-
Jup, schreibe das in ein Log-File aber ich habe einen dummen Fehler gemacht, ich verwende
srand((unsigned)time(NULL));mehrmals und das so oft/schnell das immer der selbe seed kommt, logisch das auch die Zahlen gleich sind...
Lösung war, indem ich
srand((unsigned)time(NULL));nur einmal beim Programmstart aufrufe, dann passt alles, danke für den Tipp.