目前在课堂上学习Java中的数学知识
当我的老师给我看这个公式时,我说不出话来?
if ((int)(Math.random() * 15) == 1) { 什么东西* 15是1?
发布于 2015-09-24 13:03:55
这是因为转换为整数。
(int) Math.random()
您可以看到Math.random()给出了一个在0.0到1.0之间的随机数,当您转换成一个整数时,您实际上是在说--“把所有十进制位都扔掉”
所以,如果你做了0.5次,(int) Math.random()会给你0。
现在看看你的代码,你会看到这样的东西
假设Math.random()给出0.3,那么
((int)(0.3 * 15) == 1),它将是((int)(4.5) == 1),现在还记得对int的转换吗?扔掉小数位。所以我们只剩下if (4 == 1)了。
在这种情况下,条件将是假的,因此if中的代码不会运行,但是在乘法后有可能有一个类似于1.xx的数字。
发布于 2015-09-24 13:00:07
假设Math.random返回0.08907633950002491
现在根据你的公式
0.08907633950002491*15 it returns 1.3361450925003737在int型铸造之后,它将是1。
(int)(Math.random() * 15) == 1 returns true
发布于 2015-09-24 12:57:11
java.lang.Math.random()返回一个正号的双值,大于或等于0.0,小于1.0。
X* 15 =1
X= 1/15
所以X是区间0-1的一个双值.一切都是正确的。
https://stackoverflow.com/questions/32761834
复制相似问题