qrand没有生成随机数

Mic*_*rey 4 random qt

我有一个QT应用程序,运行2个以上的线程.

在线程内部,我使用qrand函数生成一个随机数.以下是用于获取数字的代码,其中m_fluctuations max是double.

int fluctuate =  qrand() % (int)(m_FluctuationMax * 100);
Run Code Online (Sandbox Code Playgroud)

我尝试在主线程中添加以下代码,也在线程类中添加.

QTime now = QTime::currentTime();
qsrand(now.msec());
Run Code Online (Sandbox Code Playgroud)

现在的问题是,每次启动应用程序时,生成的值总是相同的.

它们不应该是不同的,因为种子是由'currentTime()'设置的.

谢谢

Mic*_*rey 8

我在线程/类构造函数中有我的qsrand().当我将它移动到run()函数时,它开始随机工作.不知道为什么它不能从构造函数中工作.谢谢大家的帮助.

  • 仅供参考:它不能从构造函数中工作,因为`qsrand()`[将种子存储在thread-local-storage中](http://doc.qt.nokia.com/latest/qtglobal.html#qsrand)(独立)每个线程的值).将调用放入构造函数中时,种子在一个线程中初始化并在另一个线程中使用.将调用放在`run()`方法中时,种子在调用`qrand()`的同一个线程中初始化. (10认同)