最近在做彩票的项目,有到了随机算法,在这里分享一下:
一.常用方法:arc4random
例:获取一个随机整数,范围在[from,to],包括from,包括to
(arc4random() % (to – from + 1))+ from
二、生成不重复随机数
思想:其原理就是利用两个数组,第一个数组存放要随机的原始数据,第二个数组存放结果;然后arc4random产生一个随机数,将这个随机数用作下标,把第一个数组对应下标的数据取出并删除。取出后存入第二个数组。然后循环往复就可以了。即便两次arc4random产生的随机数是相同的,但第一个数组对应下标的数据却是不一样的。
//从数组中随机出m个不同数字
- (NSMutableArray *)congshuzuzhongSuijiMgeBuTongShu:(NSInteger )m {
NSMutableArray *startArray=[[NSMutableArray alloc] initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6", nil];
NSMutableArray *ary = [NSMutableArray array];
for (int i=0; i<m; i++) {
int t = arc4random()%startArray.count;
ary[i] = startArray[t];
startArray[t] = [startArray lastObject];
[startArray removeLastObject];
}
return ary;
}
三、再补充一个关于递归的算法实现:
//递归实现阶乘,比如5!=5*4*3*2*1
-(NSInteger)digui:(NSInteger)i{
if (i>0) {
return i*[self digui:(i-1)];
}else{
return 1;
}
}