美文网首页
JAVA随机数(Math类和Random类生成的随机数)

JAVA随机数(Math类和Random类生成的随机数)

作者: alex_zj | 来源:发表于2019-04-22 15:09 被阅读0次

    new Random()

    1.以这种形式实例化对象时,Java编译器以系统当前时间作为随机数生成器的种子,因为每时每刻的时间都不可能相同,所以产生的随机数也不同。如果运行速度太快,也会产生两次运行结果相同的随机数。

    2.伪随机既有规则的随机,Random类中的随机算法就是伪随机。具体表现为:相同种子数的Random对象生成的随机数序列相同:

    Random r1 = new Random(100);

    Random r2 = new Random(100);

    结果:产生的随机数相同。

    3.产生 1~50的整数

    n + (new Random()).nextInt(m-n+1)

    例:

    生成整数随机数

    Random rand=new Random();

    for(inti= 0;i< 50;i++) {

    try{

    Thread.sleep(500);

    }catch(InterruptedException e) {

    //TODOAuto-generated catch block

    e.printStackTrace();

    }

    int num = rand.nextInt(3) +1;

    System.out.println(num);

    //返回大于等于m小于m+n(不包括m+n)之间的随机数

    int num2= m + (int)(Math.random() * n);

    System.out.println("======="+num2);

    int num3=(int)(Math.random() * n);//返回大于等于0小于n之间的随机数

    }

    生成double的随机数

    Random rand=new Random();

    for(inti= 0;i< 50;i++) {

    try{

    Thread.sleep(800);

    }catch(InterruptedExceptione) {

    //TODOAuto-generated catch block

    e.printStackTrace();

    }

    doublenum=rand.nextDouble()* 0.05 + 0.01;

    System.out.println(num);

    //返回大于等于m小于m+n(不包括m+n)之间的随机数

    doublenum2= 0.01+ (double)(Math.random() * 0.05);

    System.out.println("======="+num2);

    intnum3=(int)(Math.random() * 0.05);//返回大于等于0小于n之间的随机数

    System.out.println("==="+num3);

    }

    Math.random() 方法生成[0, 1)范围内的double类型随机数;Random类中的nextXxxx系列方法生成0-n的随机数;

    Math.random() 线程安全,多线程环境能被调用;

    如无特殊需求,则使用(int)(Math.random()*n)的方式生成随机数即可。

    相关文章

      网友评论

          本文标题:JAVA随机数(Math类和Random类生成的随机数)

          本文链接:https://www.haomeiwen.com/subject/tyzbwftx.html