web-dev-qa-db-fra.com

Nombre aléatoire générant des nombres uniques dans Objective-C?

Je veux générer des nombres aléatoires entre 1-100 dans Objective-C. Chaque nombre aléatoire doit être unique et ne pas être identique à un nombre aléatoire précédemment généré.

18
Tirth

arc4random() %(100)-1 cela a fonctionné pour moi.

6
Tirth

Vérifiez ces liens 



  • Objective-C: Obtenir un nombre aléatoire

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

    Comment utiliser:

    1) Implémentez la méthode ci-dessus dans votre fichier .m

    2) Ajoutez la ligne suivante à votre fichier .h:

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

    3) Appelez la méthode comme suit:

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

76
Viktor Apoyan

Utilisez arc4random et stockez les résultats dans un NSSet qui se chargera des doublons.

5
Abizern

Une autre méthode simple consiste à utiliser la méthode arc4random_uniform ():

L'appel de arc4random_uniform (N) renvoie un nombre aléatoire de 0 à N-1. Pour obtenir un nombre de 1 à N, vous pouvez utiliser:

NSUInteger r = arc4random_uniform(N) + 1;

où N est le nombre maximum que vous recherchez. Dans Swift, vous pouvez le faire comme:

var randomIndex:UInt32 = arc4random_uniform(N) + 1

par exemple. si vous voulez obtenir un nombre aléatoire compris entre 1 et 100, appelez simplement le:

NSUInteger r = arc4random_uniform(100) + 1;

ou à Swift:

var randomIndex:UInt32 = arc4random_uniform(100)+1
3
momentsnapper

C'est le code qui génère des nombres aléatoires uniques ...

-(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]);
    }
}

Bonne codage ..

2
Asish AP

Cette méthode générera un tableau de nombres aléatoires uniques dans l'intervalle des plages haute et basse.

-(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);

}
0
iSankha007