用Math.random取随机数和用Random类中的方法有什么不同?

解决方案 »

  1.   

    看看Math.random的源代码,就知道它其实是调用了java.util.Random#nextDouble()
      

  2.   

    Math.random()取得0<=x<1的double类型。Random直接上代码:import java.util.ArrayList;
    import java.util.Collections;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Random;
    import java.util.Set;/**
     * Random 类
     * http://www.juheit.com
     */
    public class StudyRandom{ public static void main(String[] args){

    //创建随机的实例
    Random r = new Random();

    //产生随机整数
    int ranInt = r.nextInt();

    System.out.println("ranInt:" + ranInt);

    //产生相同的随机序列
    r = new Random(IRandomConstant.SEED);

    for(int i = 0; i < 5; i ++){
    System.out.println(r.nextInt());
    }

    //每次产生不同的随机序列
    r = new Random(System.currentTimeMillis());
    for(int i = 0; i < 5; i ++){
    System.out.println(r.nextInt());
    }

    //产生指定范围内的随机数
    r = new Random();
    for(int i = 0; i < 5; i ++){
    // System.out.println(r.nextInt(50));//50以内
    System.out.println(r.nextInt(51) + 50);//50~100之间的随机数
    }

    getRandomMaxMinNum();

    }

    /**
     * 取出50~100之间的随机数,取出其中的最大数、第二大数和最小数、第二小数
     */
    public static void getRandomMaxMinNum(){

    Random r = new Random();

    //创建无序集合
    Set<Integer> randomSet = new HashSet<Integer>();
    for(int i = 0; i < 10; i ++){
    randomSet.add(new Integer(r.nextInt(51) + 50));
    }
    System.out.println("randomSet:" + randomSet);

    //创建有序集合
    List<Integer> randomList = new ArrayList<Integer>();
    randomList.addAll(randomSet);

    //排序
    Collections.sort(randomList);

    if(randomList.size() >= 2){
    System.out.println("MaxInt:" + randomList.get(randomList.size() - 1));
    System.out.println("MaxSecInt:" + randomList.get(randomList.size() - 2));
    System.out.println("MinSecInt:" + randomList.get(1));
    System.out.println("MinInt:" + randomList.get(0));
    }

    }

    }interface IRandomConstant{
    /**
     * 随机种子
     */
    public static final Long SEED = 1000000L;
    }
      

  3.   

    Math.random方法内部调用的就是Rondom类的方法