Java随机数类 Random 源码解析

目录

new Random之后 发生了什么

空参构造器

Random(long seed)

nextInt() 调用时发生了什么


new Random之后 发生了什么

基本的常量

Java随机数类 Random 源码解析_第1张图片

 

空参构造器

Java随机数类 Random 源码解析_第2张图片

Java随机数类 Random 源码解析_第3张图片

Random(long seed)

Random(long seed)等效于

Random rnd = new Random();

rnd.setSeed(seed);

Java随机数类 Random 源码解析_第4张图片

Java随机数类 Random 源码解析_第5张图片

所以使用该构造器在实例化的时候 时间开销更小,因为没有调用系统的时间函数。

nextInt() 调用时发生了什么

Java随机数类 Random 源码解析_第6张图片

Java随机数类 Random 源码解析_第7张图片

下一个种子的计算公式:

(seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1)

返回 (int)(seed >>> (48 - bits)).

这是一个线性同余伪随机数生成器,由D.H.Lehmer和Donald E.Knuth在《计算机编程艺术》提出。

随机数的生成算法有平方取中法,线性同余法,梅森旋转法等。

你可能感兴趣的:(Java基础知识,源码,随机数)