作者:李永健
撰写时间:2019年 5月15日
开发工具与关键技术:MyEclipse 10 、Java
Random类专门用于生成一个伪随机数的类,其产生的随机数是根据种子和顺序决定 的;ThreadLocalRandom类是Java 7新增的一个类,它是Random的增强版。在并发 访问的环境下,呆证系统具有更好的线程安全性
常用方法:
例子:
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
public class RandomClassDemo {
public static void main(String[] args) {
Random random=new Random();
ThreadLocalRandom random3=ThreadLocalRandom.current();
//随机生成Boolean
System.out.println("random.nextBoolean() = "+random.nextBoolean());
System.out.print("random.nextBytes(bytes) =");
//生成随机字节并将其置于用户提供的 byte 数组中
byte[] bytes=new byte[5];
random.nextBytes(bytes);
for (byte b : bytes) {
System.out.print(b+"\t");
}
System.out.println();
//生成0.0~1.0之间的伪随机float数
System.out.println("random.nextFloat() = "+random.nextFloat());
//生成0.0~1.0之间的伪随机double数
System.out.println("random.nextDouble() = "+random.nextDouble());
// 生成一个处于long整数取值范围的伪随机整数
System.out.println("random.nextLong() = "+random.nextLong());
// 生成一个处于int整数取值范围的伪随机整数
System.out.println("random.nextInt() = "+random.nextInt());
//随机生成0(包 括)和指定值(不包括)之间均匀分布的 int 值
System.out.println("random.nextInt(9) = "+random.nextInt(9));
// 生成平均值是 0.0,标准差是 1.0的伪高斯数
System.out.println("random.nextGaussian() ="+random.nextGaussian());
}
}
结果图:
伪随机数:
只要两个Random对象的种子相同,而且方法的调用顺序也相同,产生的随机数相同;
import java.util.Random;
public class RandomClassDemo1 {
public static void main(String[] args) {
//Random产生的数字并不是真正随机的,而是一种伪随机
long longValue=System.currentTimeMillis();
System.out.println(longValue);
Random random = new Random(longValue);
System.out.println("第一个种子为longValue的Random对象");
System.out.println("random .nextBoolean()=" + random .nextBoolean());
System.out.println("random .nextInt()=" + random .nextInt());
System.out.println("random .nextGaussian()=" + random .nextGaussian());
System.out.println("random .nextDouble()=" + random .nextDouble());
System.out.println("---------------------------");
Random random1 = new Random(longValue);
System.out.println("第二个种子为longValue的Random对象");
System.out.println("random1.nextBoolean()=" + random1.nextBoolean());
System.out.println("random1.nextInt()=" + random1.nextInt());
System.out.println("random1.nextDouble()=" + random1.nextDouble());
System.out.println("random1.nextGaussian()=" + random1.nextGaussian());
结果图: