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()的区别
-
currentTimeMillis():当多线程调用时,由于CPU速率很快,因此currentTimeMillis很可能相等,使得随机数结果也会相等
-
nanoTime():返回最准确的可用系统计时器的当前值,以毫微秒为单位。此方法只能用于测量已过的时间,与系统或钟表时间的其他任何时间概念无关。