为什么以下产生0-9而不是10?
我的理解是Math.random()创建介于0到1.0之间的数字。
所以它可以产生0.99987,它变成10×10,不是吗?
int targetNumber = (int) (Math.random()* 10);
答案 0 :(得分:18)
在Java中将double
转换为int
会进行整数截断。这意味着如果你的随机数是0.99987,那么乘以10得到9.9987,整数截断得到9。
答案 1 :(得分:14)
来自Math javadoc:
“伪随机双倍大于或等于0.0且小于1.0”
1.0不是Math.random的有效值。所以你不能获得10.而(int)9.999给出9
答案 2 :(得分:2)
原因(Math.random()* 10 使用 int()向上舍入,因此 int(9.9999999)会产生 9 强>
答案 3 :(得分:1)
因为(int)
向下舍入
(int)9.999
导致9。
//整数截断
答案 4 :(得分:0)
0.99987,其变为10×10
不是我上学的时候。它变成了9.9987。
答案 5 :(得分:0)
Math.floor(Math.random()* 10)+ 1
现在你得到1到10之间的整数,包括数字10。
答案 6 :(得分:0)
您可以始终在命令末尾加上+1,允许它在生成的数字上加1。所以,你会有这样的事情:
int randomnumber = ( (int)(Math.random( )*10) +1);
这将产生1到10之间的任何整数。
如果你想要0到10之间的任何整数,你可以这样做:
int randomnumber = ( (int)(Math.random( )*11) -1);
希望这有帮助!
答案 7 :(得分:0)
你可以在等式中加1,所以输出将是1到10而不是0到9 像这样:
int targetNumber = (int) (Math.random()* 10+1);