?
Dokumen ini menggunakan Manual laman web PHP Cina Lepaskan
在頭文件<stdlib.h>中定義 | ||
---|---|---|
int rand(); |
返回0
和RAND_MAX
(0和RAND_MAX
包含)之間的偽隨機(jī)整數(shù)值。
srand()
種子使用的偽隨機(jī)數(shù)發(fā)生器rand()
。如果rand()
在任何呼叫之前使用srand()
,則rand()
表現(xiàn)得像播種一樣srand(1)
。每次rand()
播種時(shí)srand()
,它必須產(chǎn)生相同的值序列。
rand()
不保證是線程安全的。
(沒(méi)有)。
包含0
和之間的偽隨機(jī)整數(shù)值RAND_MAX
。
對(duì)于產(chǎn)生的隨機(jī)序列的質(zhì)量沒(méi)有保證。過(guò)去,某些實(shí)現(xiàn)在rand()
產(chǎn)生的序列的隨機(jī)性,分布和周期方面存在嚴(yán)重的缺陷(在一個(gè)眾所周知的例子中,低位簡(jiǎn)單地在調(diào)用之間1
和0
之間交替)。rand()
不建議用于嚴(yán)格的隨機(jī)數(shù)生成需求,如密碼學(xué)。
POSIX要求使用的偽隨機(jī)數(shù)發(fā)生器的周期rand
至少為232
.
POSIX提供了一個(gè)名為rand_r的rand的線程安全版本,這個(gè)版本已經(jīng)過(guò)時(shí)了,并且被drand48系列函數(shù)所使用。
#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標(biāo)準(zhǔn)(ISO / IEC 9899:2011):
7.22.2.1 rand函數(shù)(p:346)
C99標(biāo)準(zhǔn)(ISO / IEC 9899:1999):
7.20.2.1 rand函數(shù)(p:312)
C89 / C90標(biāo)準(zhǔn)(ISO / IEC 9899:1990):
4.10.2.1 rand函數(shù)