基本上面试的童鞋都遇到过这个问题,或者类似的问题。我就在此提供一个简单的算法给大家!..
方法一:
public class Main {
int array[]={4,5,3,5,9,12,43,23};int length=array.length;
boolean mark[]=new boolean[length];
int c[]=new int[length];
Random r=new Random();
int p=0;
/**
* @param args
*/
public static void main(String[] args) {
Main m=new Main();
for(int i=0;i<m.array.length;i++){
System.out.print(","+m.array[i]);
}
System.out.println("");
m.a();//随机产生数组
for(int j=0;j<m.length;j++){
System.out.print(","+m.c[j]);
}
}
public void a(){
for(int i=0;i<length;i++){
c[i]=array[b()];
}
}
public int b(){
boolean biaozi=true;
while(biaozi){
p=r.nextInt(length);
if(!mark[p]){
biaozi=false;
mark[p]=true;
}
}
return p;
}
}
方法二:提供思路,后面就很好解决了。。。想想就会的,呵呵~~
将其数组中的每一个数据看成对象,然后放到list里面,然后再利用random随机生成一个数,去过的list中对应的数据,然后赋值给一个创建同样大小的数组,然后创建一个for循环逐个赋值,从list取走数据后,然后将其list中移除此对象,然后再根据此时的list.size,然后随机生成数,去取list中的数据,然后赋值给新的数组....以此下去就ok了。
如果还没有明白,举个最简单的生活中的例子很明白了。
福利彩票中奖号码的随机生成:
已知 6个球 现在是排好序的。
然后将其全部倒入桶中,然后搅拌,随机取球。取出的球我们顺序排好。全部取完,排列好的这个顺序不就是我们想要的了吗 。。。。简答吧 哈哈~~