轉載自: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:
intrandomNumber = [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;
NSUIntegercapacity = [dataArraycount]-1;//dataArray是取值的源數組
NSMutableArray*container = [[NSMutableArrayalloc]initWithCapacity:capacity];
for(NSUIntegeri =0; i < [dataArraycount] ; i++) {
NSNumber*nsi = [NSNumbernumberWithInt:i];
[containeraddObject:nsi];
}
NSUIntegerindex = [setintValue];
[containerremoveObjectAtIndex:index];
index = (arc4random() % [containercount]);
irandom1 = [containerobjectAtIndex:index];
[containerremoveObjectAtIndex:index];
index = (arc4random() % [containercount]);
irandom2 = [containerobjectAtIndex:index];
[containerremoveObjectAtIndex:index];
index = (arc4random() % [containercount]);
irandom3 = [containerobjectAtIndex:index];
[containerremoveObjectAtIndex:index];
index = (arc4random() % [containercount]);
irandom4 = [containerobjectAtIndex:index];
[containerrelease];