毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 移动平台 >> 正文

ios随机抽取数组中N个不重复元素代码

更新时间:2014-5-28:  来源:毕业论文

NSMutableSet
例如一个数组ABC里面有100个元素,那么你随机产生0到99之间的一个int,然后用ABC[i]来取出,当取出一个后,你就把取出来的从数组里移除,然后再产生0到98个int,再取出ABC[i],再移除,再生成0到97个int,这样就保证了随机取出,并不重复。

如果你的数组里面本身已有重复元素,则先过滤一下。比如创建另外一个数组,把原来的数组一个加进去,加的时候先判断是否已经存在。例如用containsObject方法可以判断。
//35选7(随机生成7个不相同的数字35之内)要求尽量提高效率
这个例子的思路楼主可以看看
 
 
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

#define TOTAL 35
#define CHOOSE 7

int main()
{
    int arr[TOTAL] = {0,};
    int choose[CHOOSE] = {0, };
    int i = 0;
    int randid = 0;
    for (i=0;i<TOTAL;i++)
    {
        arr[i] = i+1;
    }
    srand(time(NULL));
    for (i=0;i<CHOOSE;i++)
    {
        randid = rand()%(TOTAL-i);
        choose[i] = arr[randid];
        arr[randid] = arr[TOTAL-i-1];
    }
    for(i=0;i<CHOOSE;i++)
    {
        printf("%2dt", choose[i]);
    }

    return 0;
}
思路:
1.根据数组的个数,来随机生成数组的下标索引,因为根据这个下标索引就可以得到数组中对应的元素。
2.如何存储元素,并保证不重复。这里可以使用NSMutableSet来存储已经获取的随机出来的值,NSMutableSet的作用就是能保证这里存储的值不会出现重复。
3.根据NSMutableSet中已经存储的个数作为while循环的条件,来循环生成随机数。退出循环的条件就是NSMutableSet中的数量已经超过你想要生成的数量。

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。