srand

来自cppreference.com
< c‎ | numeric‎ | random
在标头 <stdlib.h> 定义
void srand( unsigned seed );

以值 seed 播种 rand() 所用的随机数生成器。

若在任何到 srand() 的调用前使用 rand(),则 rand() 表现为如同它被以 srand(1) 播种。

每次以同一 seed 播种 rand() 时,它必须产生相同的值数列。

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(0)); // 以当前时间为随机数生成器的种子
    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 (第 252-253 页)
  • C11 标准(ISO/IEC 9899:2011):
  • 7.22.2.2 The srand function (第 346-347 页)
  • C99 标准(ISO/IEC 9899:1999):
  • 7.20.2.2 The srand function (第 312-313 页)
  • C89/C90 标准(ISO/IEC 9899:1990):
  • 4.10.2.2 The srand function

参阅

产生一个伪随机数
(函数)
rand() 生成的最大可能值
(宏常量)