2010-02-17 10 views
8

Comment générer un nombre aléatoire quand un bouton est cliqué, et en fonction de ce nombre, différentes actions ont lieu.Nombre aléatoire dans l'iphone sdk?

Je n'ai probablement besoin que d'un nombre aléatoire compris entre 1 et 10.

-(IBAction)buttonClicked{ 

"generate the random number" 

if(number == 1){ 

    something happens 
} 

else if(number == 2){ 
    somethine else happens 
} 

etc 

} 
+0

http://stackoverflow.com/questions/160890/generating-random-numbers-in-objective-c –

Répondre

14

Et s'il vous plaît, s'il vous plaît, si vous générer un nombre aléatoire de 1 à 10 ... utiliser l'interrupteur au lieu d'un tas de si {} else if clauses {}:

switch (arc4random() % 10){ 
case 0: 
    //blah blah 
    break; 
case 1: 
    //blah blah 
    break; 
//etc etc 
} 
+0

Mieux encore, utilisez un algorithme approprié pour générer des nombres aléatoires entre 0 et * n * à partir d'une distribution uniforme de nombres aléatoires entre 0 et * n_max *: celle implémentée dans java.util.Random # nextInt (int) est assez bien pensée: http://java.sun.com/javase/ 6/docs/api/java/util/Random.html # nextInt% 28int% 29 – Joey

4

Comme obj-c est un surensemble du langage C, vous pouvez utiliser librement rand fonction

27

Il y a quelques problèmes avec rand() qui il y a beaucoup de messages sur et ils vous recommandons d'utiliser arc4random() au lieu. Cette fonction est ensemencée automatiquement et a un meilleur algorithme pour la génération de nombres.

int myNumber = arc4random() % 10 

Cela signifierait que myNumber serait entre 0-9.

Donc, dans votre cas, vous voulez:

int number = (arc4random() % 2) + 1; 

qui vous donnerait une gamme de 1-2.

2

Si vous avez besoin d'un nombre aléatoire sécurisé, vous pouvez utiliser:

int SecRandomCopyBytes (
    SecRandomRef rnd, 
    size_t count, 
    uint8_t *bytes 
); 

comme décrit here.

1

J'ai eu bien le succès avec arc4random() - juste le moduler pour définir une plage. Par exemple:

arc4random()% 100;

J'éviterais activement d'utiliser rand() car il ne produit pas vraiment de nombres aléatoires et il doit être ensemencé.

0

NSArray *arr=[NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10", nil]; NSMutableArray *valueArray=[[NSMutableArray alloc]init];

int count=0; 
while(count<5) 
{ 


    int rand= arc4random()%10; 
    NSLog(@"%d",rand); 


    NSString *str=[arr objectAtIndex:rand]; 
    if(![valueArray containsObject:str]) 
    { 
    [valueArray addObject:str]; 
    count++; 
    } 




} 


NSLog(@"%@",valueArray);