在iPhone中有几个内嵌的随机数发生器,很多人的第一反应可能就是在调用如下函数后使用rand():
但是……,rand()实际并不是一个真正的伪随机数发生器,random()会相对好点,但也不算理想。幸运的是iPhone上还有其他的选择。个人来说我首选arc4random() ,原因就是它是一个真正的伪随机算法,而且范围是rand()的两倍。 在iPhone中,RAND_MAX是0x7fffffff (2147483647),而arc4random()返回的最大值则是 0x100000000 (4294967296),从而有更好的精度。此外,使用arc4random()还不需要生成随机种子,因为第一次调用的时候就会自动生成。 通过arc4random() 获取0到x-1之间的整数的代码如下:
获取1到x之间的整数的代码如下:
其中,根据预算优先级括号实际是不需要的,不过我还是对括号格外小心。 最后如果想生成一个浮点数,可以在项目中定义如下宏:
然后就可以使用arc4random() 来获取0到100之间浮点数了(精度是rand()的两倍),代码如下:
原文链接:http://iphonedevelopment.blogspo ... -vs-arc4random.html |