首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

生成10个不同的随机数保存到数组当中,该怎么解决

2012-01-12 
生成10个不同的随机数保存到数组当中生成10个不同的随机数保存到数组当中[解决办法]也可以用集合来做,这里

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

热点排行