Ramdom类用于生成随机数。
一、与Math类的ramdom的关系
两者本质时一样的,因为Math类的random()方法底层就是用Random实现的;
底层源码为:
Random类:
public Random() {
this(seedUniquifier() ^ System.nanoTime());
}
Math类的Random的方法: public static double random() {
return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble();
}
二、Random类的构造方法
Random()创建一个新的随机数生成器
Random(long seed)使用单个long种子创建一个新的随机数生成器
Random类中还定义了很多方法用于获取随机数,最常用的是nextInt(),他返回下一个伪随机数返回值是类型。
返回下一个随机数的语法格式如下:
int nextInt();//生成随机数生成器的序列中均匀分布的int值
int nextInt(int n);//此随机数生成器的序列,在0(包括)和指定值n(不包括)之间均匀分布的int值
示例:
import java.util.Random;
public class Test {
public static void main(String[] args) {
Random rand=new Random();// 创建一个Rondom对象
for (int i = 0; i < 10; i++) {//生成10个随机数
int num=rand.nextInt(10);//10 以内的随机数
System.out.println("第"+(i+1)+"个随机数是:"+num);
}
}
}
第1个随机数是:8
第2个随机数是:6
第3个随机数是:1
第4个随机数是:1
第5个随机数是:1
第6个随机数是:6
第7个随机数是:1
第8个随机数是:4
第9个随机数是:5
第10个随机数是:6
三、种子值(seed)
同一个种子值来初始化两个Random对象,然后用每个对象调用相同的方法,那么得到的随机数也相同。
public class Test {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {//生成10个随机数
Random rand=new Random(10);// 创建一个Rondom对象
int num=rand.nextInt(10);//10 以内的随机数
System.out.println("第"+(i+1)+"个随机数是:"+num);
}
}
}
运行结果:
第1个随机数是:3
第2个随机数是:3
第3个随机数是:3
第4个随机数是:3
第5个随机数是:3
第6个随机数是:3
第7个随机数是:3
第8个随机数是:3
第9个随机数是:3
第10个随机数是:3
Random rand=new Random(10)其中10为种子值
每次调用生成的随机数都是不变的。



