Случайное число в iOS? - PullRequest
       19

Случайное число в iOS?

8 голосов
/ 17 февраля 2010

Как создать случайное число при нажатии кнопки, и в зависимости от этого числа выполняются различные действия

Мне, вероятно, нужно только случайное число от 1 до 10.

-(IBAction)buttonClicked{

"generate the random number"

if(number == 1){

    something happens
}

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

etc

}

Ответы [ 6 ]

27 голосов
/ 17 февраля 2010

Есть несколько проблем с rand (), о которых есть множество сообщений, и они рекомендуют использовать arc4random(). Эта функция добавляется автоматически и имеет «лучший» алгоритм генерации чисел.

int myNumber = arc4random() % 10

Это будет означать, что myNumber будет между 0-9.

Итак, в вашем случае вы хотите:

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

, что даст вам диапазон 1-2.

14 голосов
/ 17 февраля 2010

И, пожалуйста, пожалуйста, если вы генерируете случайное число от 1 до 10 ... используйте переключатель, а не кучу выражений if {} else if {}:

switch (arc4random() % 10){
case 0:
   //blah blah
   break;
case 1:
   //blah blah
   break;
//etc etc
}
4 голосов
/ 17 февраля 2010

Поскольку obj-c является надмножеством языка c, вы можете свободно использовать rand function

2 голосов
/ 17 февраля 2010

Если вам нужно криптографически безопасное случайное число, вы можете использовать:

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

, как описано здесь .

1 голос
/ 18 февраля 2010

У меня был хороший успех с arc4random () - просто измените его, чтобы установить диапазон. Например:

arc4random ()% 100;

Я бы активно избегал использования rand (), так как он не выдает действительно случайные числа и его нужно заполнить

0 голосов
/ 26 июля 2012
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);
...