在進行Qt程式設計時,很多時候我們都需要用到隨機數。那麼,在Qt中,究竟怎樣生成隨機數呢?生成隨機數時又應該注意些什麼呢?
工具/原料
Qt 5.6
一、用到的函式和主要思路
在Qt中,生成隨機數的函式為 qrand。該函式是標準C++函式 rand 的執行緒安全版本。
不過,如果我們僅僅只是呼叫該函式來生成隨機數,那麼每次得到的隨機數都將是相同的,這是因為Qt生成的隨機數嚴格來說是一個“偽隨機”,它的產生是根據隨機數種子計算得到的。如果種子相同,那麼所得到的隨機數也是相同的。
因此,為了使我們的隨機數看起來更為“隨機”一些,我們在每次獲取隨機數之前都需要初始化一個不同的隨機數種子,這就需要用到qsrand函式,該函式只有一個整型引數,即要設定的隨機數種子。
所以,為了每次得到不同的隨機數,一般通用的作法是:
1)獲取當前的系統時間
2)獲得該時間與上個時間之間的毫秒數
3)用這個毫秒數初始化隨機數種子
4)生成隨機數
二、實際程式碼
思路明白了,實現起來也就不難了。在下面的示例中,每當我們點選“生成”按鈕時,就會在正中的標籤上顯示一個隨機數。
具體的實現程式碼如下:
首先,得到當前系統時間和上個時間。請注意,為了儲存上個時間,在這裡我們使用的是一個靜態時間變數,並在第一次進入該函式時對其初始化。
另外,由於我們使用了QTime類,因此需要包含標頭檔案
然後,獲取兩個時間之間的毫秒數,並用這個毫秒數初始化隨機數種子。
接著,生成隨機數並在標籤上顯示。
最後,儲存本次單擊時間,以便用於下次生成隨機數。