生成10个不同的随机数保存到数组当中

解决方案 »

  1.   

    http://topic.csdn.net/u/20111012/14/11b025f0-e55a-4db7-bcb8-14f312fbaa06.html
    为什么不用集合,你也太霸道了吧,干脆不用java
      

  2.   

    也可以用集合来做,这里用的比较直观可以理解的,生成0-100内的int整数值,互不重复
    import java.util.Random;/**
     * Created by IntelliJ IDEA.
     * User: gaoyong
     * Date: 2011-10-12
     * Time: 22:54:09
     * To change this template use File | Settings | File Templates.
     */
    public class RandomArray {
        public static void main(String[] args) {
            int[] array=new int[10];
            int i=0;
            while(i<10){
                int temp= (int)(Math.random()*100);
                if(i==0){
                    array[i]=temp;
                    i++;
                }
                if(i>0){
                    if(hasExisteted(array,i,temp))
                        continue;
                    else{
                        array[i]=temp;
                        i++;
                    }
                }
            }        for(int o:array){
                System.out.print(o+",");
            }
        }
        private static boolean hasExisteted(int[] ary,int cap,int value){
            boolean result=false;
            for(int i=0;i<cap&&i<ary.length;i++){
                 if(ary[i]==value)
                     return true;
            }
            return result;
        }
    }
      

  3.   

    用set集合可以去重,然后调用toArray()就可以转换成数组了
      

  4.   

    如果不使用集合,为了提高效率,仿照下面的写法
    import java.util.Arrays;
    public class ProduceRandom {
        public static int MIN = 100;
        public static int MAX = 200;//不包含MAX
        public static int SUM = 10;//总共10个随机数
        public static void main(String[] args) throws InterruptedException {
    Integer[] intArray = new Integer[SUM];
    for (int counter = 0; counter < 10; counter++) { //记录已经产生的随机数个数
        Integer temp = (int) (Math.random() * (MAX - MIN)) + MIN;//假设只产生整数,不产生浮点数等其他类型的数
        int index = temp % SUM;//因为没有使用集合,为了提高匹配效率,仿真哈希算法,简单的产生下标
        while (intArray[index] != null) {
    if (intArray[index] == temp)
        break;//值相同时也复制到那个堆内存,相当于什么都没做
    index = (index + 1) % SUM;
        }
        intArray[index] = temp;
    }
    System.out.println(Arrays.toString(intArray));
        }
    }
      

  5.   

    //如果不使用集合,请仿照下面的写法
    public class ProduceRandom {
        public static void main(String[] args) {
    Integer[] intArray = getRandomArray(100, 200, 10);
    for (Integer i : intArray) {
        System.out.print(i + " ");
    }
        }    /**
         * @param MIN:下界
         * @param MAX:上界
         * @param SUM:总个数
         * @return:不同整数的整型数组
         */
        public static Integer[] getRandomArray(final int MIN, final int MAX,
        final int SUM) {
    Integer[] intArray = new Integer[SUM];
    for (int counter = 0; counter < 10; counter++) { // 记录已经产生的随机数个数
        Integer temp = (int) (Math.random() * (MAX - MIN)) + MIN;// 假设只产生整数,不产生浮点数等其他类型的数
        int index = temp % SUM;// 因为没有使用集合,为了提高匹配效率,仿真哈希算法,简单的产生下标
        while (intArray[index] != null) {
    if (intArray[index] == temp)
        break;// 值相同时也复制到那个堆内存,相当于什么都没做
    index = (index + 1) % SUM;
        }
        intArray[index] = temp;
    }
    return intArray;
        }
    }