2010-02-17 14 views
8

Cómo se genera un número aleatorio cuando se hace clic en un botón, y según ese número, se llevan a cabo diferentes acciones.Número aleatorio en iphone sdk?

Probablemente solo necesite un número aleatorio del 1-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 –

Respuesta

14

Y por favor, por favor, si está generando un número aleatorio entre 1 y 10 ... utilizar el interruptor en lugar de una pila de si {} else if} {cláusulas:

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

Mejor aún, utilizar un algoritmo adecuado para la generación de números aleatorios entre 0 y * n * a partir de una distribución uniforme de números aleatorios entre 0 y * n_max *: el implementado en java.util.Random # nextInt (int) está bastante bien pensado: http://java.sun.com/javase/ 6/docs/api/java/util/Random.html # nextInt% 28int% 29 – Joey

4

Como obj-c es un superconjunto del lenguaje C se puede utilizar libremente rand función

27

Hay algunos problemas con rand(), que hay un montón de mensajes sobre y recomiendan que utilice arc4random() en lugar. Esta función se siembra automáticamente y tiene un algoritmo "mejor" para la generación de números.

int myNumber = arc4random() % 10 

Esto significaría que habría myNumber entre 0-9.

Así que en su caso de que quiera:

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

lo que le daría un rango de 1-2.

2

Si necesita un número aleatorio criptográficamente seguro que puede utilizar:

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

como se describe here.

1

que he tenido buena éxito con arc4random() - simplemente modúlelo para establecer un rango. Por ejemplo:

arc4random()% 100;

Yo evitaría activamente el uso de rand() ya que no produce números verdaderamente aleatorios y necesita ser sembrado.

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