//早期处理办法 先初始化随机数种子然后取随机数qsrand(QTime::currentTime().msec());//取 0-10 之间的随机数qrand()%10;//取 0-1 之间的浮点数qrand()/double(RAND_MAX);//新版处理办法 支持5.10以后的所有版本包括qt6QRandomGenerator::global()->bounded(10);//生成一个0和10之间的整数QRandomGenerator::global()->bounded(10.123);//生成一个0和10.123之间的浮点数QRandomGenerator::global()->bounded(10,15);//生成一个10和15之间的整数//兼容qt4-qt6及以后所有版本的方法 就是用标准c++的随机数函数srand(QTime::currentTime().msec());rand()%10;rand()/double(RAND_MAX);//通用公式 a是起始值,n是整数的范围int value = a +rand()% n;//(min, max)的随机数int value = min +1+(rand()%(max - min -1));//(min, max]的随机数int value = min +1+(rand()%(max - min +0));//[min, max)的随机数int value = min +0+(rand()%(max - min +0));//[min, max]的随机数int value = min +0+(rand()%(max - min +1));//如果在线程中取随机数,线程启动的时间几乎一样,很可能出现取到的随机数一样的问题,就算设置随机数为当前时间啥的也没用,电脑太快很可能还是一样的时间,同一个毫秒。//取巧办法就是在run函数之前最前面将当前线程的id作为种子设置。时间不可靠,线程的id才是唯一的。//切记 void * 转换到数值必须用 long long,在32位是可以int但是在64位必须long,确保万一直接用quint64最大srand((longlong)currentThreadId());qrand((longlong)currentThreadId());