一、函式
1、rand
函式原型:int rand(void);
所在標頭檔案:stdlib.h
功能描述:rand()的內部實現是用線性同餘法做的,它不是真的隨機數,因其週期特別長,故在一定的範圍裡可看成是隨機的。rand()返回一隨機數值的範圍在0至rand_max 間。rand_max的範圍最少是在32767之間(int),用unsigned int 雙位元組是65535,四位元組是4294967295的整數範圍。0~rand_max每個數字被選中的機率是相同的。使用者未設定隨機數種子時,系統預設的隨機數種子為1。rand()產生的是偽隨機數字,每次執行時是相同的,若要不同,用函式srand()初始化它。
2、srand
函式原型:void srand(unsigned int seed);
所在標頭檔案:stdlib.h
功能描述:srand()用來設定rand()產生隨機數時的隨機數種子。引數seed必須是個整數,通常可以利用time(0)的返回值或null來當做seed。如果每次seed都設相同值,rand()所產生的隨機數值每次就會一樣。
3、time
函式原型:time_t time(time_t *t);
所在標頭檔案:time.h
**返回值:**成功則返回秒數,失敗則返回((time_t)-1)值,錯誤原因存於errno 中
功能描述:此函式會返回從公元 1970 年1 月1 日的utc 時間從0 時0 分0 秒算起到現在所經過的秒數。如果t 並非空指標的話,此函式也會將返回值存到t 指標所指的記憶體。
4、ftime
函式原型:int ftime(struct timeb *tp);
所在標頭檔案:sys/timeb.h
**返回值:**無論成功或失敗都返回0
功能描述:ftime()將目前日期由tp所指的結構返回。tp結構定義:
struct timeb;
二、**例項:1、以秒為隨機數種子
unsigned int tseed = time(null);
srand(tseed);
unsigned int crand = rand();
2、以秒為隨機數種子產生一定範圍內的數值
unsigned int tseed = time(null);
srand(tseed);
// 生成[b,a]範圍內的數值,包括b和a
unsigned int range = a - b + 1;
unsigned int crand = rand() % range + b;
// 生成[b,a)範圍內的數值,包括b,不包括a
unsigned int range = a - b;
unsigned int crand = rand() % range + b;
3、以毫秒為隨機數種子
struct timeb timeseed;
ftime(×eed);
srand(timeseed.time * 1000 + timeseed.millitm); // milli time
unsigned int crand = rand();
4、以毫秒為隨機數種子產生一定範圍內的數值
struct timeb timeseed;
ftime(×eed);
srand(timeseed.time * 1000 + timeseed.millitm); // milli time
// 生成[b,a]範圍內的數值,包括b和a
unsigned int range = a - b + 1;
unsigned int crand = rand() % range + b;
// 生成[b,a)範圍內的數值,包括b,不包括a
unsigned int range = a - b;
unsigned int crand = rand() % range + b;
讀後有收穫可以支付寶請作者喝咖啡:
隨機數種子
隨機數 int main 函式rand 是真正的隨機數生成器,而srand 會設定供rand 使用的隨機數種子。如果你在第一次呼叫rand 之前沒有呼叫srand 那麼系統會為你自動呼叫srand 而使用同種子相同的數呼叫 srand 會導致相同的隨機數序列被生成。srand unsigned ti...
隨機數種子
隨機數就是就隨機數種子中取出的數。種子就是個序號,這個序號交給乙個數列管理器,通過這個序號,你從管理器中取出乙個數列,這個數列就是你通過那個序號得到的隨機數。但這個隨技術並不真正隨機。因為它是通過某個演算法的得到。也就是說你給數列管理器同乙個序號將得到同樣乙個 隨機 數列。也就是說種子和隨機數列是一...
隨機數種子
隨機數 int main 函式rand 是真正的隨機數生成器,而srand 會設定供rand 使用的隨機數種子。如果你在第一次呼叫rand 之前沒有呼叫srand 那麼系統會為你自動呼叫srand 而使用同種子相同的數呼叫 srand 會導致相同的隨機數序列被生成。srand unsigned ti...