背景
最近在做项目的时候遇到需要从数据库中随机选取几条不重复的记录,本着偷懒的心从网上复制了一段代码发现居然无限循环方法出不去。
//将选取的人数规格和候选人的人数作为参数获取正式陪审员指针直并放入到数组中
public int[] getRandem(int SHAIXUANRS,int houXuanRSize){
int [] xuanQuRS=new int[SHAIXUANRS];
for(int j=0;j<SHAIXUANRS;j++){
Boolean buChongF=true;
while(true){
// math.random生成的随机数是0~1之间的小数,百倍之后取整
int ran = (int) (houXuanRSize * Math.random());
for(int k=0;k<=j;k++){
if(ran==xuanQuRS[k]){
buChongF=false;
break;
}
}
if(buChongF){
xuanQuRS[j]=ran;
break;
}
}
}
return xuanQuRS;
}
然后自己想了花了一小时xiug修改了这个方法作为自己的以后复制的库
//
public int[] getRandem(Integer shaiXuanRS, int size) {
int[] xuanQuRS = new int[shaiXuanRS];
Boolean[] xuanLe=new Boolean[size];
for(int i=0;i<size;i++)xuanLe[i]=true;
for (int j = 0; j < shaiXuanRS; j++) {
while (true) {
// math.random生成的随机数是0~1之间的小数,百倍之后取整
int ran = (int) (size * Math.random());
System.out.println(ran+" "+j);
if(!xuanLe[ran]){
continue;
}else {
xuanQuRS[j]=ran;
xuanLe[ran]=false;
break;
}
}
}
return xuanQuRS;
}
代码简单,基本上很容易懂得