欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java Random随机数类

程序员文章站 2022-07-14 20:23:56
...

一、构造方法

构造方法名 备注
Random()
Random(long seed) 如果种子一样,会生成同一个数

二、方法

方法名 作用
int nextInt() 返回正负20亿的随机数
int nextInt(int n) 返回 [0, n) 之间的随机数
double nextDouble() 返回 [0, 1) 之间的随机数

eg.

class randomTest{
    public static void main(String[] args) {
        //无参构造方法
        Random r1 = new Random();

        //有参构造方法
        Random r2 = new Random(System.currentTimeMillis());//多线程环境下,cpu运行过快,使用System.currentTimeMillis()可能会导致重复随机数

        Random r3 = new Random(System.nanoTime());//多线程环境下,更容易更准确

        int i = r1.nextInt(10);//[0, 10)的随机数
        int i1 = r1.nextInt(10) + 1;//[1, 10)的随机数
        int i2 = r1.nextInt(30) + 10;//[10, 30)的随机数

        double i4 = r1.nextDouble();//[0.0, 1.0)的随机数
    }
}

注意:

  • Math.random() 方法底层 new Random().nextDouble() 方法
  • new Random() 底层还是调用了带参数的构造器

随机数种子currentTimeMillis()和nanoTime()的区别

  1. currentTimeMillis():当多线程调用时,由于CPU速率很快,因此currentTimeMillis很可能相等,使得随机数结果也会相等

  2. nanoTime():返回最准确的可用系统计时器的当前值,以毫微秒为单位。此方法只能用于测量已过的时间,与系统或钟表时间的其他任何时间概念无关。