У меня есть приложение QT, в котором работает еще 2 потока.qrand не генерирует случайное число
Внутри потоков я использую функцию qrand для генерации случайного числа. Ниже приведен код, используемый для получения номера, где m_fluctuations max является двойным.
int fluctuate = qrand() % (int)(m_FluctuationMax * 100);
Я попытался добавить следующий код в основной поток, а также внутри классов потоков.
QTime now = QTime::currentTime();
qsrand(now.msec());
Проблема в том, что генерируемые значения всегда одинаковы при каждом запуске приложения.
Разве они не будут отличаться, так как семя задается значением 'currentTime()'.
Благодаря
FYI: он не работал с конструктором, потому что 'qsrand()' [хранит семя в потоке-локальном хранилище] (http://doc.qt.nokia.com/latest/qtglobal.html#qsrand) (независимые значения для каждого потока). При помещении вызова в конструктор семя инициализируется в одном потоке и используется в другом. При помещении вызова в метод 'run()' семя инициализируется в том же потоке, который вызывает 'qrand()'. –