(Eg:如果只需要一个答案,直接翻到最下面即可)
首先Math.random()是令系统随机生成一个大于等于 0.0 且小于 1.0 (前开后闭)的伪随机 double 值,为方便本篇叙述将其表示为:
Math.random:[0.0,1.0)
下面以整数(int)为例子:
通常,如果我们需要获取从[x,y)范围内的伪随机数,有下面这样的公式:
Math.random()*(y-x)+x
这很好理解是不是,那如果我们需要闭区间的呢,也就是需要获取从[x,y]范围内的伪随机整数,其实也很简单,只需要:
(int)Math.random()*(y-x+1)+x
为了方便理解,我们取x=10,y=35;为例子
首先
Math.random:[0.0,1.0)
Math.random()(35-10):[0.0,25.0)
Math.random()(35-10+1):[0.0,26.0)
所以
Math.random()(35-10+1)+10:[10.0,36.0)
由于i墙砖为int会丢失精度,也就是舍去小数部分,因此得到
(int)Math.random()(35-10+1)+10:[10,35](值为整数)
总结:
- 若需要[x,y)范围的伪随机数
Math.random()*(y-x)+x
- 若需要[x,y]范围的伪随机整数
(int)Math.random()*(y-x+1)+x