Произвольное число, генерируемое в objective-C?

Я хочу генерировать случайные числа между 1-100 в Objective-C. Каждое случайное число должно быть уникальным и не совпадать с ранее созданным случайным числом.

Ответы

Ответ 1

arc4random() %(100)-1 это сработало для меня.

Ответ 2

Проверьте ссылки



  • Objective-C: получить случайное число

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

    Как использовать:

    1) Выполните метод выше в свой .m файл

    2) Добавьте следующую строку в файл .h:

    -(int)getRandomNumberBetween:(int)from to:(int)to;
    

    3) Вызвать метод следующим образом:

    int randomNumber = [self getRandomNumberBetween:9 to:99];
    //this gets you a random number between 9 and 99
    

Ответ 3

Используйте arc4random и сохраните результаты в NSSet, который позаботится о дубликатах для вас.

Ответ 4

Другим простым способом является использование метода arc4random_uniform():

Вызов arc4random_uniform (N) возвращает случайное число от 0 до N-1. Чтобы получить число от 1 до N, вы можете использовать:

NSUInteger r = arc4random_uniform(N) + 1;

где N - максимальное количество, которое вы ищете. В Swift вы можете сделать это как:

var randomIndex:UInt32 = arc4random_uniform(N) + 1

например. если вы хотите получить случайное число от 1 до 100, просто позвоните как:

NSUInteger r = arc4random_uniform(100) + 1;

или быстро:

var randomIndex:UInt32 = arc4random_uniform(100)+1

Ответ 5

Это код, который генерирует уникальные случайные числа...

-(void)UniqueRandom{

    int T[11];
    BOOL flag;
    for(int i=0;i<10;i++){

        int ranNo=  random()%100+1;
        flag=TRUE;
        int s=(sizeof T); 

        for(int x=0;x<s;x++){

            if(ranNo==T[x]){
                i--;
                flag= FALSE;
                break;
            }
        }

        if(flag) T[i]=ranNo;
    }

    for(int j=0;j<100;j++)  NSLog(@"unique random %d",T[j]);
    }
}

Счастливое кодирование.

Ответ 6

Этот метод будет генерировать массив уникальных случайных чисел в интервале высокого и низкого диапазона.

-(void)generateRandomUniqueNumberInRange :(int)rangeLow :(int)rangeHigh{
    NSMutableArray *unqArray=[[NSMutableArray alloc] init];
    int randNum = arc4random() % (rangeHigh-rangeLow+1) + rangeLow;
    int counter=0;
    while (counter<rangeHigh-rangeLow) {
        if (![unqArray containsObject:[NSNumber numberWithInt:randNum]]) {
            [unqArray addObject:[NSNumber numberWithInt:randNum]];
            counter++;
        }else{
            randNum = arc4random() % (rangeHigh-rangeLow+1) + rangeLow;
        }

    }
    NSLog(@"UNIQUE ARRAY %@",unqArray);

}