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é.
arc4random() %(100)-1
cela a fonctionné pour moi.
Vérifiez ces liens
Comment générer des nombres aléatoires sur l'iPhone?
int r = arc4random() % 100;
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
Utilisez arc4random et stockez les résultats dans un NSSet qui se chargera des doublons.
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
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 ..
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);
}