首页 > 代码库 > 从N个元素的集合中随机取m个元素的算法实现
从N个元素的集合中随机取m个元素的算法实现
最近有一个需求,比较简单,就是如标题所说的,从N个元素中随机取m个元素,当然这m个元素是不能存在重复的。本以为这么简单的需求,应该有现成的工具类来实现,但是几次查找居然没找到(有知道的可以推荐下哈^_^)。只好自己实现了下。
自己的实现思路也不知道是不是有问题,或者还有没有更好的思路来实现,所以在这里贴出来,供有兴趣的猿友提提建议、找找问题,或者找到更好的实现思路。
废话不多说,直接上代码(java实现)
/** * 随机取num个从0到maxVal的整数。包括零,不包括maxValue * @param num * @param maxValue * @return */ public static List<Integer> random(int num,int maxValue){ if(num>maxValue ){ num=maxValue; } if(num<0 || maxValue<0){ throw new RuntimeException("num or maxValue must be greater than zero"); } List<Integer> result = new ArrayList<Integer>(num); int[] tmpArray = new int[maxValue]; for(int i=0;i<maxValue;i++){ tmpArray[i]=i; } Random random = new Random(); for(int i=0;i<num;i++){ int index = random.nextInt(maxValue-i); int tmpValue = http://www.mamicode.com/tmpArray[index];>
从N个元素的集合中随机取m个元素的算法实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。