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){
something else happens
}
etc
}
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.
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
}
由于obj-c是c语言的超集,因此您可以自由使用rand函数
If you need a cryptographically secure random number you may use:
int SecRandomCopyBytes (
SecRandomRef rnd,
size_t count,
uint8_t *bytes
);
as described here .
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.
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);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.