1. 问答
  2. 问答详情

java随机数的产生原理

1个回答

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

撰写答案

验证码
点击刷新