2010-09-18 5 views
0

j'essaie d'avoir un tableau qui contient 5 entiers (0,1,2,3,4) appelé questionNumber le questionNumber est censé finir avec 4 donc j'essaie de faire une fonction pour appeler aléatoirement les nombres 0-3 et passer de l'un à l'autre (ajouter 1 au numéro précédent) jusqu'à ce qu'ils atteignent 4. Comment cela serait-il mis en œuvre? merci beaucoupchoisir des éléments de tableau qui contient des entiers

+0

Je n'ai pas compris la question. Vous dites des nombres aléatoires et juste après vous dites que vous devriez ajouter 1 au nombre précédent ... Ce n'est plus aléatoire. Je vois aussi qu'il n'est pas directement lié à l'iPhone - c'est plus susceptible d'être une question d'algorithme, n'est-ce pas? De toute façon, si vous connaissez les étapes exactes, essayez d'expliquer le problème à nouveau. –

+0

Les étapes obtiennent une séquence de nombres aléatoires de 1-10 disons. Assurez-vous que 10 est le dernier numéro de la séquence. Utilisez le numéro de question pour voir cette séquence –

+1

Vous continuez à poser la même question (plus ou moins) encore et encore. Veuillez ne poser des questions qu'une seule fois et, le cas échéant, prenez le temps de les formuler aussi clairement que possible. –

Répondre

0

Eh bien, vous pouvez utiliser arc4random()% x; pour obtenir un nombre aléatoire de 0 à x-1. Donc, vous voulez un nombre aléatoire entre 0-3 donc utilisez arc4random()% 4;

Puis stocker cette valeur aléatoire dans un int et l'utiliser pour incrémenter. Par exemple

int currentNum = -1;

[self incrementNum];

vide incrementNum() {

if (currentNum == -1) 
    currentNum = [self getRandomNumber]; 
else if (currentNum < 5) 
    currentNum++; 

}

int getRandomNumber() {

return arc4random() % 4; 

}

EDIT ::

De la lecture de ce que vous avez dit ci-dessus, je pense que j'ai mal compris. Voulez-vous ce tableau à trier au hasard pour que les 4 questions pourraient sortir du tableau pour tels que: 2,4,1,3

Si oui, alors vous voulez quelque chose comme:

// QuestionArray [] contient les questions de 0-4 // NewQuestionArray [] contiendra les nouvelles questions classées aléatoirement // Si première boucle, alors cette question ne sera pas apparue avant // Si sur i> = 1 alors boucle sur la précédente nombres pour voir si cette question est apparue, si elle l'a stockée alors incrémenter i int i = 0;

while (i < 5) {

int newNum = [self getRandomNumber]; 
if (i == 0) 
{ 
    NewQuestionArray[i] = QuestionArray[newNum]; 
    i++; 
} 
else 
{ 
    BOOL repeatNum = FALSE; 
    for (int p = 0; p < i; p++) 
    { 
     if (newNum == NewQuestionArray[i]) 
     { 
      repeatNum = TRUE; 
     } 
    } 
    if (!repeatNum) 
    { 
     NewQuestionArray[i] = QuestionArray[newNum]; 
     i++; 
    } 
} 

}

code peut-être pas grand mais devrait vous donner une bonne compréhension. Je n'ai pas expliqué le code car je n'ai pas vraiment inclus quelque chose qui ne soit pas basique. Mais je peux l'expliquer mieux si tu le veux.

+0

Je reçois l'erreur suivante lorsque j'essaie d'utiliser la dernière modification que vous avez fournie. Il déclare "opérandes invalides à binaire ==" donc je ne sais pas quoi utiliser maintenant? –

+0

bien je suppose que vous voudriez if (QuestionArray [newNum] == NewQuestionArray [i]) – user449710

+0

Eh bien cela dépend quel type votre QuestionArray [] utilise. S'il contient une chaîne alors je suppose que vous voudriez: if ([[QuestionArray objectAtIndex: newNum] isEqualTo: [NewQuestionArray objectAtIndex: i]]) – user449710

Questions connexes