0
采纳
1. 如果没有设种子seed,则自动选择当前的系统时间毫秒作为种子,种子为48bits
public Random() { this(System.currentTimeMillis()); }
2. 如果自己设置了种子,用如下公式计算:
this.seed = (seed ^ 0x5DEECE66DL) & ((1L << 48) - 1);
3. 计算时,使用如下公式:
seed = (seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1);
return (int)(seed >>> (48 - bits));
4. 需要int就将上面的bits设为32
5. 如果是long就先算出32,然后左移32位,再加上新算的一个32bits的数
6. 如果是boolean,bits设为1