©
本文檔使用 php中文網手册 發布
在头文件<stdlib.h>中定义 | ||
---|---|---|
int rand(); |
返回0
和RAND_MAX
(0和RAND_MAX
包含)之间的伪随机整数值。
srand()
种子使用的伪随机数发生器rand()
。如果rand()
在任何呼叫之前使用srand()
,则rand()
表现得像播种一样srand(1)
。每次rand()
播种时srand()
,它必须产生相同的值序列。
rand()
不保证是线程安全的。
(没有)。
包含0
和之间的伪随机整数值RAND_MAX
。
对于产生的随机序列的质量没有保证。过去,某些实现在rand()
产生的序列的随机性,分布和周期方面存在严重的缺陷(在一个众所周知的例子中,低位简单地在调用之间1
和0
之间交替)。rand()
不建议用于严格的随机数生成需求,如密码学。
POSIX要求使用的伪随机数发生器的周期rand
至少为232
.
POSIX提供了一个名为rand_r的rand的线程安全版本,这个版本已经过时了,并且被drand48系列函数所使用。
#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.1 rand函数(p:346)
C99标准(ISO / IEC 9899:1999):
7.20.2.1 rand函数(p:312)
C89 / C90标准(ISO / IEC 9899:1990):
4.10.2.1 rand函数