下面總結了QT中隨機生成的方法(僅供學習參考),分為舊方法和新方法,一般來說,舊的方法已經被拋棄,在開發新的應用中推薦使用新方法。
C++ Code
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include <QCoreApplication> #include <QDebug> #include <QTime> #include <QRandomGenerator> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 舊方法 // 生成隨機數主要用到了函數qsrand和qrand,這兩個函數在#include <QtGlobal>中; // qsrand用來設置一個種子,該種子為qrand生成隨機數的起始值。 // 比如說qsrand(10),設置10為種子,那么qrand生成的隨機數就在[10,32767]之間。 // 而如果在qrand()前沒有調用過qsrand(),那么qrand()就會自動調用qsrand(1),即系統默認將1作為隨機數的起始值。 // 使用相同的種子生成的隨機數一樣。 // 在使用qrand()函數產生隨機數之前,一般要使用qsrand()函數為其設置初值,如果不設置初值,那么每次運行程序,qrand()都會產生相同的一組隨機數。 qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime())); int nTestNum = qrand() % 100; qDebug() << nTestNum; // 新方法(推薦使用) qDebug() << QRandomGenerator::global()->bounded(256); qDebug() << QRandomGenerator::global()->bounded(256.0); return a.exec(); } |
說明:舊方法使用的是qsrand()和qrand()的組合實現方法,精度一般;新方法使用的是QRandomGenerator類,可以提供高精度的隨機數實現。