ios 知识点

iOS 生成随机数

2017-06-13  本文已影响2531人  何以_aaa

Objective-c中并没有提供生成随机数的函数,所以使用C中提供的rand()、srand()、random()、arc4random()几个函数。

1. 使用 arc4random 生成随机数

int x = arc4random() % 100;
int x = arc4random() % (to - from + 1) + from;
-(int)getRandomNumber:(int)from to:(int)to
{
  return (int)(from + (arc4random() % (to – from + 1)));
}

2. 使用 rand() 生成随机数

int x = rand() % (to - from + 1) + from;
printf("Random numbers are: %i %i\n",rand(),rand());
srand((unsigned)time(0)); 

3. 比较

  1. rand()random() 实际并不是一个真正的伪随机数发生器,在使用之前需要先初始化随机种子,否则每次生成的随机数一样。

  2. arc4random() 是一个真正的伪随机算法,不需要生成随机种子,因为第一次调用的时候就会自动生成。而且范围是 rand() 的两倍。在iPhone中,RAND_MAX是0x7fffffff (2147483647),而arc4random()返回的最大值则是 0x100000000 (4294967296)。

  3. 精确度比较:arc4random() > random() > rand()

  4. 使用比较:

// 1. rand(),初始化随机种子,不加这句每次产生的随机数不变
srand((unsigned)time(0));
int i = rand() % 100;

// 2. random()
srandom(time(0));
int i = random() % 100;

// 3. arc4random()
int i = arc4random() % 100 ;

4. 生成随机小数,生成随机整数再除

4.1. 随机小数:[0,1)

float f = (float)(arc4random()%100) / 100 ;
上一篇 下一篇

猜你喜欢

热点阅读