名稱空間
變體
操作

srand

來自 cppreference.com
< c‎ | 數值‎ | 隨機
在標頭檔案 <stdlib.h> 中定義
void srand( unsigned seed );

使用值 seedrand() 使用的偽隨機數生成器播種。

如果在任何呼叫 srand() 之前使用了 rand(),則 rand() 的行為就像它已經用 srand(1) 播種一樣。

每次使用相同的 seedrand() 播種時,它必須生成相同的值序列。

不保證 srand() 是執行緒安全的。

目錄

[編輯] 引數

seed - 種子值

[編輯] 返回值

(無)

[編輯] 注意

通常,偽隨機數生成器應僅在程式開始時,在任何呼叫 rand() 之前播種一次。不應重複播種,也不應在每次您希望生成一批新的偽隨機數時重新播種。

標準做法是使用對 time(0) 的呼叫結果作為種子。但是,time() 返回一個 time_t 值,並且不保證 time_t 是整數型別。但在實踐中,所有主要的實現都將 time_t 定義為整數型別,這也是 POSIX 所要求的。

[編輯] 示例

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
    srand(time(NULL)); //use current time as seed for random generator
    int random_variable = rand();
    printf("Random value on [0,%d]: %d\n", RAND_MAX, random_variable);
}

可能的輸出

Random value on [0 2147483647]: 1373858591

[編輯] 參考

  • C17 標準 (ISO/IEC 9899:2018)
  • 7.22.2.2 The srand function (p: 252-253)
  • C11 標準 (ISO/IEC 9899:2011)
  • 7.22.2.2 The srand function (p: 346-347)
  • C99 標準 (ISO/IEC 9899:1999)
  • 7.20.2.2 The srand function (p: 312-313)
  • C89/C90 標準 (ISO/IEC 9899:1990)
  • 4.10.2.2 The srand function

[編輯] 另請參閱

生成偽隨機數
(函式) [編輯]
rand() 生成的最大可能值
(宏常量) [編輯]
C++ 文件 for srand