函式
<cstdlib>

srand

void srand (unsigned int seed);
初始化隨機數生成器
使用作為 seed 傳遞的引數來初始化偽隨機數生成器。

對於每次呼叫 srand 時使用的不同 seed 值,可以預期偽隨機數生成器在後續呼叫 rand 時會生成不同的結果序列。

使用相同 seed 的兩次不同初始化,在後續呼叫 rand 時將生成相同的結果序列。

如果 seed 設定為 1,生成器將被重新初始化為其初始值,併產生與任何 randsrand 呼叫之前相同的值。

為了生成類似隨機的數字,srand 通常被初始化為某個獨特的執行時值,例如函式 time(在標頭檔案 <ctime> 中宣告)返回的值。這對於大多數簡單的隨機化需求來說已經足夠獨特。

引數

seed
一個整數值,用作偽隨機數生成器演算法的種子。

返回值



示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* srand example */
#include <stdio.h>      /* printf, NULL */
#include <stdlib.h>     /* srand, rand */
#include <time.h>       /* time */

int main ()
{
  printf ("First number: %d\n", rand()%100);
  srand (time(NULL));
  printf ("Random number: %d\n", rand()%100);
  srand (1);
  printf ("Again the first number: %d\n", rand()%100);

  return 0;
}

可能的輸出

First number: 41
Random number: 13
Again the first number: 41


資料競爭

該函式會訪問和修改內部狀態物件,這可能導致與併發呼叫 randsrand 發生資料競爭。

一些庫提供了 rand 的替代函式,該函式明確避免了這種資料競爭:rand_r(不可移植)。

C++ 庫實現可以保證呼叫此函式時不會發生資料競爭

異常 (C++)

無異常保證:此函式從不丟擲異常。

另見