如何在单击按钮时生成随机数,并根据该数字执行不同的操作。
我可能只需要一个1-10的随机数。
-(IBAction)buttonClicked{
"generate the random number"
if(number == 1){
something happens
}
else if(number == 2){
something else happens
}
etc
}
答案 0 :(得分:27)
rand()存在一些问题,其中有很多帖子,他们建议你改用arc4random()
。此功能自动播种,并具有“更好”的数字生成算法。
int myNumber = arc4random() % 10
这意味着myNumber
介于0-9之间。
所以在你的情况下你想要:
int number = (arc4random() % 2) + 1;
这会给你1-2的范围。
答案 1 :(得分:14)
请拜托,如果你要生成一个从1到10的随机数...请使用开关而不是一堆if {}否则{}条款:
switch (arc4random() % 10){
case 0:
//blah blah
break;
case 1:
//blah blah
break;
//etc etc
}
答案 2 :(得分:4)
由于obj-c是c语言的超集,您可以自由使用rand函数
答案 3 :(得分:2)
如果您需要加密安全随机数,您可以使用:
int SecRandomCopyBytes (
SecRandomRef rnd,
size_t count,
uint8_t *bytes
);
如here所述。
答案 4 :(得分:1)
我在arc4random()方面取得了很大的成功 - 只需将模数设置为范围。例如:
arc4random()%100;
我会主动避免使用rand(),因为它不会产生真正的随机数,而且需要播种。
答案 5 :(得分: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);