iOS中的随机数?

时间:2010-02-17 15:38:03

标签: ios objective-c random numbers generator

如何在单击按钮时生成随机数,并根据该数字执行不同的操作。

我可能只需要一个1-10的随机数。

-(IBAction)buttonClicked{

"generate the random number"

if(number == 1){

    something happens
}

else if(number == 2){
    something else happens
}

etc

}

6 个答案:

答案 0 :(得分:27)

rand()存在一些问题,其中有很多帖子,他们建议你改用arc4random()。此功能自动播种,并具有“更好”的数字生成算法。

int myNumber = arc4random() % 10

这意味着myNumber介于0-9之间。

所以在你的情况下你想要:

int number = (arc4random() % 2) + 1;

这会给你1-2的范围。

答案 1 :(得分:14)

请拜托,如果你要生成一个从1到10的随机数...请使用开关而不是一堆if {}否则{}条款:

switch (arc4random() % 10){
case 0:
   //blah blah
   break;
case 1:
   //blah blah
   break;
//etc etc
}

答案 2 :(得分:4)

由于obj-c是c语言的超集,您可以自由使用rand函数

答案 3 :(得分:2)

如果您需要加密安全随机数,您可以使用:

int SecRandomCopyBytes (
   SecRandomRef rnd,
   size_t count,
   uint8_t *bytes
);

here所述。

答案 4 :(得分:1)

我在arc4random()方面取得了很大的成功 - 只需将模数设置为范围。例如:

arc4random()%100;

我会主动避免使用rand(),因为它不会产生真正的随机数,而且需要播种。

答案 5 :(得分:0)

NSArray *arr=[NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10", nil];
    NSMutableArray *valueArray=[[NSMutableArray alloc]init];
    int  count=0;
    while(count<5)
    {
        int rand= arc4random()%10;
        NSLog(@"%d",rand);

        NSString *str=[arr objectAtIndex:rand];
        if(![valueArray containsObject:str])
        {
        [valueArray addObject:str];
         count++;
        } 
    }
    NSLog(@"%@",valueArray);