在C++程式設計中srand((unsigned int)(time(NULL)))這句程式碼的解讀
阿新 • • 發佈:2019-02-03
分享這個部落格連結,講的真的很好。
主要有以下3方面收穫:
1.srand跟rand的關係。
就是每次使用rand(),都會看之前呼叫了srand()函式沒有,沒有,預設呼叫了srand(1).
有呼叫,就是strang(seed),這裡的seed就是標題的time(NULL).
rand()取隨機數公式:
要取得[a,b)的值可以用:(rand()%(b-a))+ a;(當a為0時,可以用rand()% b)
取得偽隨機浮點數: (rand()/ double(RAND_MAX))可以取得0-1之間的浮點數,
如果想獲得更大的隨機值可以通過(rand()/ double(RAND_MAX)/ 10)以此類推
2.time函式的簡單用法
在c中的標頭檔案為
#include <time.h>//C語言的標頭檔案
#include <ctime>//C++語言的標頭檔案
time函式可以獲取當前的系統時間(但是獲取的是秒數,是從1970年1月1日零時零分零秒到目前為止所經過的時間),ctime可以將其轉化為常規的時間
3.程式碼執行優先順序
我們可以看到這個函式的引數:(unsigned int)time(0)
從優先順序的角度看,這些都是單目運算子,單目運算子的處理順序是從右往左的,所以上面的處理過程是:對於time函式,給了一個引數為0的值,返回一個當前系統時間的秒數,然後在將其強轉為unsigned int型別。
還有如同(*p++):這個也是單目運算子,處理也是從右往左的