用java生成4个0-10的随机数,要求不重复,现在有段错误的代码,一定几率会生成重复的随机数,帮忙找出错误,并做合理的修改,谢谢各位JAVA fans了!!!代码如下:
import java.util.Random;public class RandomNumberProducer2
{
 public static void main(String args[])
 {
  int randomValue[]=new int[5];
  Random randomNumbers =new Random();  for(int i=1;i<=4;i++)
  {
   randomValue[i]=randomNumbers.nextInt(10);
   for(int j=i-1;j>=1;j--)
   {
    if(randomValue[i]==randomValue[j])
    {
     randomValue[i]=randomNumbers.nextInt(10);
     j++;
    }
   }
  }
  
  System.out.println(randomValue[1]+", "
   +randomValue[2]+", "+randomValue[3]+", "+randomValue[4]);
 }
}

解决方案 »

  1.   


    import java.util.Random;   
    public class Test {   
           
        public static void main(String[] args) {   
               
            int [] seed = {0,1,2,3,4,5,6,7,8,9,10};   
            int [] ranArr = new int [4];   
            Random ran = new Random();   
            for(int i = 0 ; i<4 ; i++){   
                int j = ran.nextInt(seed.length-i);   
                ranArr [i] = seed [j];   
                seed [j] = seed [seed.length-1-i];   
                System.out.println (ranArr[i]);   
            }   
        }   
    }  
      

  2.   


    import java.util.Random;public class Test {
    public static void main(String[] args) throws Exception{
    int randomValue[]=new int[4];
    Random ram=new Random();
    for(int i=0;i<4;i++){
    randomValue[i]=ram.nextInt(10+1);//这个地方要10+1
    if(i!=0){
    for(int j=i-1;j>=0;j--){
    while(randomValue[i]==randomValue[j]){
    randomValue[i]=ram.nextInt(10+1);
    }
    }
    }
    }
    System.out.println(java.util.Arrays.toString(randomValue));
           
    }
    }