1. random()
random()不是一個(gè)真正的偽隨機(jī)數(shù)發(fā)生器,因此在使用前必須初始化隨機(jī)種子,否則每次生成的隨機(jī)數(shù)都是相同的。它會(huì)產(chǎn)生一個(gè)[0,RAND_MAX)之間的一個(gè)整數(shù)。
產(chǎn)生一個(gè)[0,100)的數(shù)字
srandom((unsigned)time(NULL));
int num = 100 * random()/RAND_MAX;
目前已經(jīng)不推薦使用random()函數(shù)了
2. arc4random()
arc4random()是一個(gè)真正的偽隨機(jī)算法,不需要隨機(jī)數(shù)種子。
產(chǎn)生一個(gè)[0,100)的數(shù)字
int num = arc4random()%100;
3. arc4random_uniform()
使用arc4random()產(chǎn)生指定的隨機(jī)數(shù)還需要做取模運(yùn)算,而arc4random_uniform()則不需要,看下面函數(shù)定義,傳入一個(gè)上邊界數(shù)字
uint32_t arc4random_uniform(uint32_t __upper_bound)
可產(chǎn)生一個(gè)[0, __upper_bound-1)的數(shù)字
int num = arc4random_uniform(100);