谁能解释一下1-6随即数 int d=(int)(Math.random()*6)+1

来源:百度知道 编辑:UC知道 时间:2024/06/15 18:54:37
要求产生一个1-6之间的随即数
int d=(int)(Math.random()*6)+1;
这么写是怎么得到的1-6的随即数?
谁能帮我解释一下呀?

(Math.random()) 是一个0~1之间的随即小数乘6后 再加1为什么得到1-6之间的数?怎么个计算过程?

public class Test {

public static void main(String[] args) {

for(int i=0;i<20;i++) {
double rand = Math.random() ;
int d = (int) (rand * 6);

int res = d + 1;

System.out.println("rand->"+rand+" rand*6->"+rand * 6+" (int)(rand*6)+1 ->"+res);

}

}

}

通过20个随即数字的产生,可以看出产生过程。当然,二楼的推断也是非常正确的。

关键在于 (int) 转换为整数,小数点后面舍弃。

Math.random()是产生 0=<d<1的随机数,不会产生1

(Math.random()*6)产生的是 0=<d<6的随机数,不会产生6,+1就产生的是

1=<d<7的随机数,舍去小数点后就是1-6的随机整数