首先是初始化:
qsrand(qtime(0,0,0).secsto(qtime::currenttime()));
接著就可以隨機了:
qrand()理論上返回0 到
rand_max間的值。
如果要返回0~n間的值,則為:qrand()%n;
如果要返回a~b間的值,則為:a + qrand() % (b - a)
這裡介紹2種方法
標頭檔案都必須的,不多說了: #include
其中乙個:
函式中:
qtime t;
t= qtime::currenttime();
qsrand(t.msec()+t.second()*1000);
int n = qrand();
還有乙個簡單方法:
qsrand(time(null));
int n = qrand();
這2句不一定要連著,前邊初始化種子可以在程式開始的時候就初始化。
如果2句連在一起,並且又同時出現在for迴圈中,就容易產生相同的隨機數。
關於srand的說明:(百科)
srand函式是隨機數發生器的初始化函式。
原型:void srand(unsigned seed);
用法:它需要提供乙個種子,如: srand(1); 直接使用1來初始化種子。不過常常使用系統時間來初始化,即使用 time函式來獲得系統時間,它的返回值為從 00:00:00 gmt, january 1, 1970 到現在所持續的秒數,然後將time_t型資料轉化為(unsigned)型再傳給srand函式,即: srand((unsigned) time(&t)); 還有乙個經常用法,不需要定義time_t型t變數,即: srand((unsigned) time(null)); 直接傳入乙個空指標,因為你的程式中往往並不需要經過引數獲得的t資料。srand((int)getpid()); 使用程式的id(getpid())來作為初始化種子,在同乙個程式中這個種子是固定的。
QT 的隨機函式的應用
首先是初始化 qsrand qtime 0,0,0 secsto qtime currenttime 接著就可以隨機了 qrand 理論上返回0 到rand max間的值。如果要返回0 n間的值,則為 qrand n 如果要返回a b間的值,則為 a qrand b a 這裡介紹2種方法 標頭檔案都...
Qt中QObject sender 的用法
qt中qobject sender 的用法 當某乙個object emit乙個signal的時候,它就是乙個sender,系統會記錄下當前是誰emit出這個signal的,所以你在對應的slot裡就可以通過 sender 得到當前是誰invoke了你的slot,對應的是qobject d sende...
Qt 中 foreach 的用法
原文連線 在標準c 中,並沒有foreach關鍵字。但是在qt中,可以使用這乙個關鍵字,其主要原因是qt自己增加了這乙個關鍵字,就像slots和signals emit等一樣。增加的foreach關鍵字在編譯時會進行預處理。其用法為 foreach varitem items foreach var...