?
? ????? PHP ??? ???? ??? ?? ??
在頭文件<stdlib.h>中定義 | ||
---|---|---|
void srand(unsigned seed); |
rand()
將值使用的偽隨機數(shù)生成器種子seed
。
如果rand()
在任何呼叫之前使用srand()
,則rand()
表現(xiàn)得像播種一樣srand(1)
。
每次rand()
播種都相同seed
,它必須產(chǎn)生相同的值序列。
srand()
不保證是線程安全的。
seed | - | 種子價值 |
---|
(none).
一般來說,偽隨機數(shù)發(fā)生器只能在任何調(diào)用之前播種一次rand()
,并且程序的開始。它不應(yīng)該重復(fù)播種,或者每當你想要生成一批新的偽隨機數(shù)時重新播種。
標準做法是使用調(diào)用的結(jié)果time(0)
作為種子。但是,time()
返回一個time_t
值,time_t
并不保證是一個整數(shù)類型。但實際上,每個主要實現(xiàn)都被定義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函數(shù)(p:346-347)
C99標準(ISO/IEC 9899:1999):
7.20.2.2 srand函數(shù)(p:312-313)
C89/C90標準(ISO/IEC 9899:1990):
4.10.2.2 srand函數(shù)
行 | 生成一個偽隨機數(shù)(函數(shù)) |
---|---|
RAND_MAX | 由rand()(宏常量)生成的最大可能值 |
| srand |的C ++文檔