Zufallszahlen in Threads
Verfasst: 1. September 2014 13:18
Hallo zusammen,
ich möchte via qsrand() und qrand() ein paar "Zufallszahlen" in einem Worker-Thread generieren.
Dabei habe ich fest gestellt das ein seeden im Konstruktor meiner Worker-Klasse nicht funktioniert und ich immer die gleiche Zahlenfolger erhalte. Das liegt daran das qrand() nur in der eigenen Thread-Umgebung ausgeführt wird, als seed wird immer die aktuelle Zeit benutzt (QTimer::currentTime.msec()) .
https://stackoverflow.com/questions/313 ... dom-number
Also habe ich meine seeding Methode aus dem Konstruktor genommen und nutze nun einen SingleShotTimer um die Methode einmal aufzurufen.
Leider ohne Erfolg ich erhalte immer die gleiche Zahlenfolge.
Abhilfe scheit es zu geben wenn man die Threadklasse ableitet und qsrand() in der run-Methode aufruft. Allerdings nutze ich meine Threads völlig anders, ich erstelle erst mein Workerobjekt und verschiebes es dann in denn Thread um diesen anschließend zu starten.
Hat jemand ggf. eine Idee wie man diese Problem umgehen könnte?
Vielen Dank Sammy
ich möchte via qsrand() und qrand() ein paar "Zufallszahlen" in einem Worker-Thread generieren.
Dabei habe ich fest gestellt das ein seeden im Konstruktor meiner Worker-Klasse nicht funktioniert und ich immer die gleiche Zahlenfolger erhalte. Das liegt daran das qrand() nur in der eigenen Thread-Umgebung ausgeführt wird, als seed wird immer die aktuelle Zeit benutzt (QTimer::currentTime.msec()) .
https://stackoverflow.com/questions/313 ... dom-number
Also habe ich meine seeding Methode aus dem Konstruktor genommen und nutze nun einen SingleShotTimer um die Methode einmal aufzurufen.
Leider ohne Erfolg ich erhalte immer die gleiche Zahlenfolge.
Abhilfe scheit es zu geben wenn man die Threadklasse ableitet und qsrand() in der run-Methode aufruft. Allerdings nutze ich meine Threads völlig anders, ich erstelle erst mein Workerobjekt und verschiebes es dann in denn Thread um diesen anschließend zu starten.
Hat jemand ggf. eine Idee wie man diese Problem umgehen könnte?
Vielen Dank Sammy