1. 程式人生 > >在C++程式設計中srand((unsigned int)(time(NULL)))這句程式碼的解讀

在C++程式設計中srand((unsigned int)(time(NULL)))這句程式碼的解讀

分享這個部落格連結,講的真的很好。
主要有以下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++):這個也是單目運算子,處理也是從右往左的