java用Math.random() 随机数控制范围问题

2024-12-14 11:05:28
推荐回答(3个)
回答1:

这是一段程序中的代码:
int randomNumber=(int)(Math.random()*8)+1;
所给出的注释是:得到一个1到8之间的随机整数。开始的时候不是很懂,于是翻书、上网找资料,但是得到的结果都是一样的。Math.random()的作用是得到0-1之间的随机数。那么是如何实现的呢?
仔细想一想其实并不是很复杂:Math.random()的取值应该是0-1(事实上取不到0和1)之间的随机小数,乘以8之后应该是0-8之间的随机小数,也就是0.****到7.****之间的小数(大于0而小于8),经过int类型转换之后,应该是0-7之间的随机整数,所以"+1"之后就会得到1-8之间的

回答2:

Math.random()是生成0~1之间的小数,Math.floor(Math.random()*7+1)输出1~7的整形数

Math.floor(Math.random()*7+13)输出 13~19的整形数

回答3:

记住一个公式:
a<= x < a+b 的表示为:(int)(a + Math.random() * b)
如果要得到1~7的整形数,a=1,b=7-1;如果要把7包进来,那么b = 7;
同理,要得到13~19,a = 13, b = 19 - 13.