Java Random随机数类

一、构造方法

构造方法名 备注
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():返回最准确的可用系统计时器的当前值,以毫微秒为单位。此方法只能用于测量已过的时间,与系统或钟表时间的其他任何时间概念无关。

猜你喜欢

转载自blog.csdn.net/qq_44715943/article/details/116334201