/**下面代码是取出不重复的随机数,
我想在这些选取的不重复随机数中包括指定的数(比如是13,7,26等)并且得到这些指定数字的下标值,该怎么实现
*/
public class test7  
{  
    public static void main(String[] args)  
    {  
        int[] arr = new int[10];  //抽取多少个数
 
        for (int i = 0; i < 10; i++)  
        {  
            arr[i] = (int) (Math.random() * 20) + 1;  //在什么范围
            for (int j = 0; j < i; j++)  
            {  
                if (arr[j] == arr[i])  
                {  
                    i--;  
                    break;  
                }  
            }  
        }  
        for (int i = 0; i < 10; i++)  
            System.out.print(arr[i] + ",");  
    }  
}

解决方案 »

  1.   


    public class Test2 
    {  
        public static void main(String[] args)  
        {  
            int[] arr = new int[10];  //抽取多少个数
      
            for (int i = 0; i < 10; i++)  
            {  
                arr[i] = (int) (Math.random() * 20) + 1;  //在什么范围
                for (int j = 0; j < i; j++)  
                {  
                    if (arr[j] == arr[i])  
                    {  
                        i--;  
                        break;  
                    }  
                }  
            }  
            for (int i = 0; i < 10; i++)  
                System.out.print(arr[i] + ",");  
            int[] att=new int[3];
            att[0]=13;att[1]=7;att[2]=26;
            for(int i=0;i<arr.length;i++){
             for(int j=0;j<att.length;j++){
             if(att[j]==arr[i]){
             System.out.println("下标:"+i+" 指定的数:"+att[j]);
             }
             }
            
            }
            
        }  
      

  2.   

    建议使用数组的形式,就像彩票一样吗?
    如果有必须出现的,那么再创建一个例如int[]{5,9,13},然后根据基准创建另外一个,比如是0-21 那么应该是先剔除掉之前的[5,9,13],然后创建一个存放随机数的数组,例如5位的 int[5],那么先随机吧必须出现的数分布到int[5]里面,然后记录位置,再随机获取剩余的数放入剩余的位置即可