Java Random类、ThreadLocalRandom类
Random和ThreadLocalRandom类均用于生成伪随机数。
Random的构造函数:
Random() 默认以系统当前时间为种子,相当于Random(System.currentTimeMillis())
Random(long seed)
常用方法:
nextXxx() 生成对应类型的伪随机数。
示例:
Random random=new Random();
int x=random.nextInt(); //生成一个int范围内的伪随机数
x=random.next(10); //生成一个[0,10)内的伪随机数
如果使用的是同一个种子,则生成的伪随机数相同。
ThreadLocalRandom是Random的加强版,在并发访问的情况下,使用ThreadLocalRandom代替Random,可以减少线程间的资源竞争,从而保证系统具有更好的线程安全。
ThreadLocalRandom rand=ThreadLocalRandom.current(); //使用静态方法获取对象
rand.nextXxx()
rand.next(x)
rand.next(x,y)
ThreadLocalRandom生成随机数的方法更丰富,因为ThreadLocalRandom提供了更多的重载方法,限制随机数的范围。
Random、ThreadLocalRandom生成的都是伪随机数。