用一个set,随机生产一个就插到set里面,set不能有重复的元素,插入不成功就继续,再随机生产30个90内的数,同样用set,把生产90个数当数据,的再把这30个数当做那有90个元素数组的下标从那90个数中取出来就行了,只是思路,程序就看lz就实现了,程序挺简单的

解决方案 »

  1.   

    因为随机数范围较小,采用数组是比较方便的。import java.util.Random;
    import java.util.Arrays;public class test
    {
    public static void main(String[] args)
    {
    int[] array = new int[100];
    Arrays.fill(array, 0);

    int count = 0;
    Random random = new Random();
    int temp;
    do
    {
    temp = random.nextInt(100);
    if ( array[temp] != 1 )
    {
    array[temp] = 1;
    count++;
    }
    } while ( count <= 90 );

    count = 0;

    int[] outArray = new int[30];
    do
    {
    temp = random.nextInt(100);
    if ( array[temp] != 0 && array[temp] != -1 )
    {
    outArray[count++] = temp+1;
    array[temp] = -1;
    }
    } while ( count < 30 );

    Arrays.sort(outArray);

    for ( int i : outArray )
    {
    System.out.print(i + " ");
    }
    }
    }
      

  2.   

    发两组测试结果:E:\java软件库>java test
    1 10 12 14 17 22 24 28 30 32 33 41 46 47 48 51 54 57 62 69 72 75 77 80 81 82 91
    92 98 100
    E:\java软件库>java test
    3 6 7 9 11 16 24 25 26 30 34 36 37 43 46 47 48 54 56 64 66 67 69 76 78 82 83 86
    94 95