数组的 笨办法 不过也可用 // is数组 times 随机交换几次 private void nRandom(int[] is, int times) { if(is.length==0)return; for(int i=0;i<times;i++){ int i1=(int)(Math.random()*is.length); int i2=(int)(Math.random()*is.length); int tmp=is[i1]; is[i1]=is[i2]; is[i2]=tmp; } }
先放进map<index, value> ,然后再随即取出来,取的时候如果key相等就舍弃,返回数组
// is数组 times 随机交换几次
private void nRandom(int[] is, int times) {
if(is.length==0)return;
for(int i=0;i<times;i++){
int i1=(int)(Math.random()*is.length);
int i2=(int)(Math.random()*is.length);
int tmp=is[i1];
is[i1]=is[i2];
is[i2]=tmp;
}
}
这样做的话先将数组转成集合:Arrays.asList(数组对象)
第二题
HashSet<Integer> set存放所有数组下标
new一个同等长度的数组,
从第一个数组中获取第一个数的值,从set中随机获取一个数,放入该值,然后set删除该数。
继续循环