J'ai besoin de randomiser un NSArray que j'ai chargé avec des questions de quiz, mais je dois garder les éléments dans un ordre spécifique.randomize NSArray
Répondre
NSArray est un objet immuable, ce qui signifie que vous ne pouvez pas changer l'ordre des éléments. Je pense que je comprends ce que vous obtenez. Il suffit d'écrire certaines fonctionnalités au-dessus de votre structure de données pour choisir des éléments de ce tableau au hasard. Vous aurez besoin de garder une trace des éléments qui ont déjà été accédés afin de ne pas les sélectionner de nouveau.
Vous pouvez également créer une copie de votre tableau en utilisant le sous-type NSMutableArray. Une fois qu'une question a été sélectionnée, retirez-la de ce tableau (vous pouvez le faire car le tableau est maintenant modifiable)
Vous utilisez une fonction C pour les nombres aléatoires. Voir rand() et srand()
Si je comprends bien la question: vous avez un tableau de questions, vous voulez montrer un sous-ensemble (d'une taille vraisemblablement fixe?) D'entre eux, mais le sous-ensemble doit préserver le commander comme dans le tableau original? Disons que vous avez N questions et que vous voulez choisir au hasard M d'entre eux. Vous pouvez créer un tableau d'éléments [0 .. (N - 1)] qui stocke les index dans le tableau d'origine. Vous pouvez ensuite mélanger ce tableau à l'aide du Knuth/Fisher-Yate's algorithm, trier les premiers éléments M et utiliser ces premiers index M pour effectuer des recherches dans le tableau d'origine.
Je suggère arc4random() au lieu de rand() et srand() pour Objective-C –