2009-11-01 8 views
0

Je suis nouveau à la programmation iPhone. J'ai 10 nombre dire (1,2,3,4,5,6,7,8,9,10). Je veux choisir au hasard 1 nombre parmi les 10 nombres ci-dessus. Comment puis-je choisir un nombre aléatoire parmi un ensemble de nombres?choisir la valeur aléatoire

Répondre

2

Si vous souhaitez simplement une valeur comprise entre 1 et 10, vous pouvez utiliser la méthode standard C rand(). Cela renvoie un entier entre zéro et RAND_MAX.

Pour obtenir une valeur comprise entre 0 et 9, vous pouvez utiliser l'opérateur %. Donc, pour obtenir une valeur comprise entre 1 et 10, vous pouvez utiliser:

rand()%10 + 1 

Si vous ne voulez pas la même série de nombres aléatoires pseudo à chaque fois, vous aurez besoin d'utiliser srand pour initialiser le générateur de nombres aléatoires. Un bon rapport qualité-prix serait le moment actuel.

Si vous demandez comment choisir un nombre dans une liste de nombres arbitraires (et éventuellement non consécutifs), vous pouvez utiliser ce qui suit.

int numbers[] = {2,3,5,7,11,13,17,19,23,29}; 
int randomChoice = numbers[rand()%10]; 
+0

Si vous voulez la possibilité d'un nombre d'être choisi le même pour chaque nombre, n'utilisez pas '%'! – Joey

+0

Comme RAND_MAX est normalement assez grand, il y a seulement une petite variation dans les probabilités. –

+0

* "Montrez-moi comment obtenir un nombre aléatoire" * - "Ici" - * "Nice, merci, quoi que ce soit à surveiller?" * - "Oui, la distribution n'est pas uniforme, mais peu importe" Hé, je génère un milliard de milliards de valeurs ici, et vous dites que cela n'aurait pas d'importance? "* ... ce n'est pas si difficile à obtenir et aussi longtemps que vous ne le faites pas En savoir plus sur les exigences du PO ne leur donne pas une réponse inférieure. – Joey

0

Pour générer un nombre aléatoire, vous devez utiliser la fonction random(). Mais si vous l'appelez deux fois, cela vous donne deux réponses égales. Avant d'appeler random(), appelez srand (time()) pour obtenir un nouveau nombre aléatoire. Si vous voulez utiliser (int i = 0; ...) pour créer des nombres, utilisez srand (time() + i).

+2

La fonction de départ pour random() est srandom(). Donc utilisez soit random() et srandom() ou rand() et srand(), mais ne mélangez pas les deux. En général, random() est recommandé car l'algorithme aléatoire est un peu meilleur. –

0

Quelque chose comme ceci:

- (IBAction)generate:(id)sender 
{ 
    // Generate a number between 1 and 10 inclusive 
    int generated; 
    generated = (random() % 10) + 1; 

} 
+0

si vous voulez dire si je veux choisir un nombre aléatoire à partir de 10 nombres, alors utilisez (random()% 10) +1. si oui alors s'il n'y a que quatre nombres, alors j'utilise la formule suivante (random()% 4) +1. S'il vous plaît suggérer – Rupesh

Questions connexes