2010-02-17 12 views
8

Come si genera un numero casuale quando si fa clic su un pulsante e, a seconda del numero, si svolgono diverse azioni.Numero casuale in sdk per iphone?

Probabilmente ho bisogno solo di un numero casuale da 1 a 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 –

risposta

14

E per favore, per favore, se si sta generando un numero casuale da 1 a 10 ... usare l'interruttore, piuttosto che un mucchio di se {} else if {} clausole:

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

Meglio ancora, utilizzare un algoritmo corretto per la generazione di numeri casuali tra 0 e * n * da una distribuzione uniforme di numeri casuali tra 0 e * n_max *: quello implementato in java.util.Random # nextInt (int) è abbastanza ben congegnato: http://java.sun.com/javase/ 6/docs/api/java/util/Random.html # nextInt% 28int% 29 – Joey

4

Come obj-C è un superset del linguaggio C è possibile utilizzare liberamente rand funzione

27

Ci sono alcuni problemi con rand(), che ci sono un sacco di post su e si consiglia di utilizzare arc4random() anziché. Questa funzione viene inizializzata automaticamente e ha un algoritmo "migliore" per la generazione dei numeri.

int myNumber = arc4random() % 10 

Ciò significa che myNumber sarebbe tra 0-9.

Quindi nel tuo caso si desideri:

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

che darebbe una gamma di 1-2.

2

Se avete bisogno di un numero casuale crittograficamente sicuro è possibile utilizzare:

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

come descritto here.

1

ho avuto buona successo con arc4random() - basta modulare per impostare un intervallo. Ad esempio:

arc4random()% 100;

Eviterei attivamente di utilizzare rand() poiché non produce numeri veramente casuali e deve essere seminato.

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);