在OC中有幾個內嵌的隨機數發生器,不少人的第一反應可能就是在調用以下函數後使用rand(), .......srandom(time(NULL)); 可是,可是()實際上並非一個整整的僞隨機數發生器,random()會好一些,但不是最理想的,幸運的是OC上還有其餘的選擇,我的來講首選arc4random(),緣由是他是一個真正的僞隨機數算法,並且範圍是rand()的兩倍。 在OC中,RAND_MAX是0x7fffffff (2147483647),而arc4random()返回的最大值則是 0x100000000 (4294967296),從而有更好的精度。此外,使用arc4random()還不須要生成隨機種子,由於第一次調用的時候就會自動生成。 經過arc4random()獲取0到x-1之間的整數的代碼以下 .....int value = arc4random()%x; 獲取1到x之間的整數的代碼以下 .....int value = (arc4random()%x )+1 最後若是想生成一個浮點數,能夠在項目中定義以下宏: #define ARC4RANDOM_MAX 0x100000000 而後就能夠使用arc4random() 來獲取0到100之間浮點數了(精度是rand()的兩倍),代碼以下: double val = floorf(((double)arc4random() / ARC4RANDOM_MAX) * 100.0f);