非常教程

C参考手册

数值 | Numerics

srand

在头文件<stdlib.h>中定义

void srand(unsigned seed);

rand()将值使用的伪随机数生成器种子seed

如果rand()在任何呼叫之前使用srand(),则rand()表现得像播种一样srand(1)

每次rand()播种都相同seed,它必须产生相同的值序列。

srand() 不保证是线程安全的。

参数

seed

-

种子价值

返回值

(none).

注意

一般来说,伪随机数发生器只能在任何调用之前播种一次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)); //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

参考

  • C11标准(ISO/IEC 9899:2011):
    • 7.22.2.2 srand函数(p:346-347)
  • C99标准(ISO/IEC 9899:1999):
    • 7.20.2.2 srand函数(p:312-313)
  • C89/C90标准(ISO/IEC 9899:1990):
    • 4.10.2.2 srand函数

另请参阅

生成一个伪随机数(函数)

RAND_MAX

由rand()(宏常量)生成的最大可能值

| srand |的C ++文档

C

C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。