views:

563

answers:

6

How do you generate a random number when a button is clicked, and depending on that number, different actions take place.

I probably only need a random number from 1-10.

-(IBACTION)buttonClicked{

"generate the random number"

if(number == 1){

    something happens
}

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

etc

}
+3  A: 

As obj-c is a superset of c language you can freely use rand function

Vladimir
+12  A: 

There are a few problems with rand() which there are loads of posts about and they recommend that you use arc4random() instead. This function is seeded automatically and has a 'better' algorithm for number generation.

int myNumber = arc4random() % 10

This would mean that myNumber would be between 0-9.

So in your case you want:

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

which would give you a range of 1-2.

willcodejavaforfood
+1  A: 

If you need a cryptographically secure random number you may use:

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

as described here.

jessecurry
+3  A: 

And please, please, if you are generating a random number from 1 to 10... use switch rather than a pile of if {} else if {} clauses:

switch (arc4random() % 10){
case 0:
   //blah blah
   break;
case 1:
   //blah blah
   break;
//etc etc
}
buggles
Better yet, use a proper algorithm for generating random numbers between 0 and *n* from a uniform distribution of random numbers between 0 and *n_max*: The one implemented in java.util.Random#nextInt(int) is pretty well thought-out: http://java.sun.com/javase/6/docs/api/java/util/Random.html#nextInt%28int%29
Joey
A: 

I have had good success with arc4random() - just modulus it to set a range. For instance:

arc4random() % 100;

I would actively avoid using rand() as it does not produce truly random numbers and it needs to be seeded.

Brian Teeter
A: 

which header file should be include(#import) for using arc4random() function ?

Naeim
This should be a question, not an answer. If you look in the documentation for `arc4random()`, you'll see that it's part of the C standard library, which means you don't have to `#import` anything: http://developer.apple.com/Mac/library/documentation/Darwin/Reference/ManPages/man3/arc4random.3.html
Dave DeLong