下面總結了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類,可以提供高精度的隨機數實現。