Hallo tobias,
Die Frage ist:
Wird der Konstruktor EINMAL aufgerufen oder für JEDEN Thread EINMAL ?
Wenn letzteres der Fall ist und du jedesmal mit dem gleichen Wert initialisierts, dann laufen alle Zufallszahlengeneratoren schön synchron und du hast den von dir dahrgestellten Effekt.
Du musst also sicherstellen, dass der Zufallszahlengeneratoren nur EINMAL instanziert wird und alle Threats auf den GLEICHEN Zufallszahlengeneratoren zugreifen.
Ich vermute, dass du einfach eine Klasse gemacht hast, im Konstruktor wird der Zufallszahlengeneratoren initialisiert und es gibt eine Funktion, in dieser Klasse, welche eine Zufallszahl zurückgeben soll.
Jetzt gibt es zwei mögliche Fehler:
-
Jeder Threat instantziert ein eigenes Object und somit hat jeder Thread einen EIGENEN Zufallszahlengenerator, welche alle mit dem gleichen Startwert arbeiten.
-
Nach jedem Auslesen einer Zufallszahl wird der Destruktor aufgerufen und somit wird dein Zufallszahlengenerator jedesmal neu gestartet.
Aber ohne deine Sourcecode kann nicht mehr dazu sagen, sondern nur Raten.
MfG Peter(TOO)
P.S. SHIFT+INSERT ist eine schöne Tastenkombination.
soweit ok, aber ich finde das deshalb unschön, da die threads
eigentlich von zufallszahlen gar nichts wissen, sie greifen
nur gemeinsam auf ein objekt zu, das intern zufallszahlen
verwendet. deshalb dachte ich es gibt vielleicht eine andere
methode zum erzeugen von zufallszahlen in c++, bei der es
genügt, wenn ich den zufallszahlengenerator ein mal im
konstruktor des besagten objekts initialisiere.