日期:2014-05-20  浏览次数:20712 次

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

------解决方案--------------------
也可以用集合来做,这里用的比较直观可以理解的,生成0-100内的int整数值,互不重复
Java code


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;
    }
}

------解决方案--------------------
如果不使用集合,为了提高效率,仿照下面的写法
Java code


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));
    }
}

------解决方案--------------------
Java code


//如果不使用集合,请仿照下面的写法
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;
    }
}