在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);