©
本文档使用 PHP中文网手册 发布
在头文件<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 ++文档