命名空间
变体
操作

srand

来自 cppreference.cn
< 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(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 srand 函数 (页: 252-253)
  • C11 标准 (ISO/IEC 9899:2011)
  • 7.22.2.2 srand 函数 (页: 346-347)
  • C99 标准 (ISO/IEC 9899:1999)
  • 7.20.2.2 srand 函数 (页: 312-313)
  • C89/C90 标准 (ISO/IEC 9899:1990)
  • 4.10.2.2 srand 函数

[编辑] 参见

生成伪随机数
(函数) [编辑]
rand() 生成的最大可能值
(宏常量) [编辑]
C++ 文档 关于 srand