背景
我们经常会遇到这样子的逻辑,从一批数中随机抽取一部分数据来。比如有1000个单词,每次随机生产50个单词给用户,怎么做呢?
解决办法
这里基于的是Java语言来解决,假设有个单词列表List
随机产生size个不大于all且不重复的下标
/*** 从all里面随机产生size个不重复的下标* @param size 需要产生的下标数* @param all 范围* @return*/public static int[] getRandomNums(int size,int all) {if(size>all) {System.err.println("size大于all"+size+">"+all);return null;}SecureRandom random = new SecureRandom();//把all当成一个listList<Integer> list = new ArrayList<Integer>();for(int i=0;i<all;i++) {list.add(i);}int[] result = new int[size];for(int j=0;j<size;j++) {//随机生成一个下标int index = random.nextInt(list.size());//根据下标去取list中的值result[j]=list.get(index);//从list移除该值list.remove(index);}return result;}
