84 votes

Choisir un objet aléatoire dans un NSArray

Disons que j'ai un tableau avec des objets, 1, 2, 3 et 4. Comment puis-je choisir un objet au hasard dans ce tableau ?

0 votes

Toutes les réponses sont correctes, mais pour une solution plus récente, voir ma réponse. ici . Il utilise le arc4random_uniform pour éviter le biais modulo.

0 votes

Ce n'est pas une réponse à cette question, mais un point intéressant - d'autres collections de Foundation (NSSet NSHashTable) ont des méthodes "anyObject" qui lisent un objet arbitraire (aléatoire) à partir du Set/HashTable. On pourrait implémenter cette méthode dans une extension de NSArray, en suivant les suggestions ci-dessous.

0voto

Pathetic Learner Points 341
 srand([[NSDate date]  timeIntervalSince1970]);

 int inx =rand()%[array count];

inx est le nombre aléatoire.

où srand() peut se trouver n'importe où dans le programme avant la fonction de tirage au sort.

0voto

jungledev Points 386
ObjectType *objectVarName = [array objectAtIndex:arc4random_uniform((int)(array.count - 1))];

Si vous voulez convertir cela en un int, voici la solution pour cela (utile lorsque vous avez besoin d'un int aléatoire à partir d'un tableau de nombres non séquentiels, dans le cas de l'appel aléatoire d'un enum, etc)

int intVarName = (int)[(NSNumber *)[array objectAtIndex:arc4random_uniform((int)(array.count - 1))] integerValue];

0voto

Ankit garg Points 980

Dans Swift 4 :

let array = ["one","two","three","four"]
let randomNumber = arc4random_uniform(UInt32(array.count))

array[Int(randomNumber)]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X