首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Math.random()在Java中,这怎么可能?

Math.random()在Java中,这怎么可能?
EN

Stack Overflow用户
提问于 2015-09-24 12:52:48
回答 3查看 500关注 0票数 1

目前在课堂上学习Java中的数学知识

当我的老师给我看这个公式时,我说不出话来?

代码语言:javascript
复制
if ((int)(Math.random() * 15) == 1) { 

什么东西* 15是1?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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的数字。

票数 1
EN

Stack Overflow用户

发布于 2015-09-24 13:00:07

假设Math.random返回0.08907633950002491

现在根据你的公式

代码语言:javascript
复制
0.08907633950002491*15 it returns 1.3361450925003737

在int型铸造之后,它将是1。

(int)(Math.random() * 15) == 1 returns true

票数 3
EN

Stack Overflow用户

发布于 2015-09-24 12:57:11

java.lang.Math.random()返回一个正号的双值,大于或等于0.0,小于1.0。

X* 15 =1

X= 1/15

所以X是区间0-1的一个双值.一切都是正确的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32761834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档