在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
.......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