转载自:http://hi.baidu.com/bunsman/blog/item/9c7cf79ba2261cacc9eaf4e4.html
参考:http://www.friendlydeveloper.com/2010/02/objective-c-get-random-number/comment-page-1/
-(int)getRandomNumber:(int)from to:(int)to {
return(int)(from + arc4random() % (to-from+1));
}
How to use:
Implement method above into your .m file
Add the following line to your .hfile:
1)
-(int)getRandomNumber:(int)from to:(int)to;
2) Call the method like:
int randomNumber = [selfgetRandomNumber:9to:99];
//this gets you a random number between 9 and 99
关于生成多个不重复随机数的问题。
我的解决思路是,先创建一个MutableArray,放入随机数的取值范围,然后从0到[mutableArray count]生成的随机数index,去取mutable的值。取一个然后再remove掉。就可以得到不重复的随机数了。
示例代码:
//生成多个随机数
NSNumber *irandom1, *irandom2, *irandom3, *irandom4;
NSUInteger capacity = [dataArray count]-1;//dataArray是取值的源数组
NSMutableArray *container = [[NSMutableArray alloc] initWithCapacity:capacity];
for (NSUInteger i = 0; i < [dataArray count] ; i++) {
NSNumber *nsi = [NSNumber numberWithInt:i];
[container addObject:nsi];
}
NSUInteger index = [set intValue];
[container removeObjectAtIndex:index];
index = (arc4random() % [container count]);
irandom1 = [container objectAtIndex:index];
[container removeObjectAtIndex:index];
index = (arc4random() % [container count]);
irandom2 = [container objectAtIndex:index];
[container removeObjectAtIndex:index];
index = (arc4random() % [container count]);
irandom3 = [container objectAtIndex:index];
[container removeObjectAtIndex:index];
index = (arc4random() % [container count]);
irandom4 = [container objectAtIndex:index];
[container release];