ios 生成不重复随机数
来源:互联网 发布:linux yum安装lnmp 编辑:程序博客网 时间:2024/06/01 09:03
一、先讲下ios三种取随机数的方法:
1. srand((unsigned)time(0)); //不加这句每次产生的随机数不变
int i = rand() % 5;
2. srandom(time(0));
int i = random() % 5;
3. int i = arc4random() % 5 ;
注:rand()和random()实际并不是一个真正的伪随机数发生器,在使用之前需要先初始化随机种子,否则每次生成的随机数一样。
arc4random() 是一个真正的伪随机算法,不需要生成随机种子,因为第一次调用的时候就会自动生成。而且范围是rand()的两倍。在iPhone中,RAND_MAX是0x7fffffff (2147483647),而arc4random()返回的最大值则是 0x100000000 (4294967296)。
精确度比较:arc4random() > random() > rand()。
常用方法:arc4random
例: 获取一个随机整数范围在:[0,100)包括0,不包括100
int x = arc4random() % 100;
二、生成不重复随机数
思想:其原理就是利用两个数组,第一个数组存放要随机的原始数据,第二个数组存放结果;然后arc4random产生一个随机数,将这个随机数用作下标,把第一个数组对应下标的数据取出并删除。取出后存入第二个数组。然后循环往复就可以了。即便两次arc4random产生的随机数是相同的,但第一个数组对应下标的数据却是不一样的。
例:0-7乱序输出
-(NSArray *)randomArray{ //随机数从这里边产生 NSMutableArray *startArray=[[NSMutableArray alloc] initWithObjects:@0,@1,@2,@3,@4,@5,@6,@7, nil]; //随机数产生结果 NSMutableArray *resultArray=[[NSMutableArray alloc] initWithCapacity:0]; //随机数个数 NSInteger m=8; for (int i=0; i<m; i++) { int t=arc4random()%startArray.count; resultArray[i]=startArray[t]; startArray[t]=[startArray lastObject]; //为更好的乱序,故交换下位置 [startArray removeLastObject]; } return resultArray;}
- ios 生成不重复随机数
- 生成不重复随机数
- 生成不重复随机数
- 生成不重复随机数
- 不重复随机数生成
- 不重复随机数生成
- iOS 随机数 不重复
- 生成不重复的随机数
- 生成不重复的随机数
- 生成不重复随机数 asp
- 生成不重复的随机数
- java 不重复随机数生成
- 生成不重复的随机数
- oracle生成不重复随机数
- 生成不重复的随机数
- 生成不重复的随机数
- java生成不重复随机数
- Go生成不重复随机数
- Swift学习(二)-Hello World
- 关于Android使用Camera自定义拍照出现模糊不清的解决方案
- ubuntu安装pygtk
- 【JSP开发】有关session的登录注销的一个小例子
- db2 常用命令
- ios 生成不重复随机数
- rails 权限系统搭建
- Android性能优化典范
- VS2008快捷键
- 微信access_token存储与更新
- 转载: Linux伙伴系统(四)--释放页
- 函数传参
- Linux vi 设置小技巧
- C#访问和操作MYSQL数据库