`
R任轩
  • 浏览: 14904 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

系统生成随机数

阅读更多

ios 生成随机数一般有三种方式:

1.    srand((unsigned)time(0));  

//加了这句的话每次产生的随机数将会发生改变
        int i = rand() % 5;      
2.    srandom(time(0));
        int i = random() % 5;
3.    int i = arc4random() % 5 ;

注:个人认为,不提倡使用第一和第二种产生随机数方法,rand()和random()在使用它们两之前需要先初始化随机种子,不然每次生成的随机数都将会是一样的。

那么第三种方法比前两种方法有哪些好处呢:

1、arc4random() 则不需要生成随机种子,因为第一次调用的时候就会自动生成。

2、从另一个角度来看而且范围是rand()的两倍之多。

接下来可以用一个简单的比较来对比下它们的范围

范围比较:arc4random()  >  random()  >  rand()。

 

接下来我们来熟悉下arcrandom()的用法吧:

 

1、获取一个随机整数范围在:[0,100)包括0,不包括100

 

int x = arc4random() % 100;

 

2、  获取一个随机数范围在:[500,1000),包括500,不包括1000

 

int y = (arc4random() % 501) + 500;

 

3、获取一个随机整数,范围在[from,to),包括from,不包括to

 

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

下面是我自己项目中所实现的arcrandom()求随机数方法:

 

 

-(NSArray *)generating_the_digital:(id)sender
{
    //随机数从这里边产生
    startArray=[[NSMutableArray alloc] initWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9", nil];
    //随机数产生结果
    resultArray=[[NSMutableArray alloc] initWithCapacity:0];
    //随机数个数
    NSInteger m=4;
    for (int i=0; i<m; i++) {
        int t=arc4random()%startArray.count;
        resultArray[i]=startArray[t];
        startArray[t]=[startArray lastObject]; //为更好的乱序,故交换下位置
        [startArray removeLastObject];//产生的随机数将会从startArray数组里移除这样就不会产生重复的随机数了
        NSLog(@"result");
    }
    return resultArray;
}

  

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics