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

时间:2015-09-24 12:52:48

标签: java math

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

当我的老师给我看这个公式时,我无言以对吗?

if ((int)(Math.random() * 15) == 1) { 

* 15怎么可能是1?

3 个答案:

答案 0 :(得分:3)

假设Math.random返回0.08907633950002491

现在根据你的公式

0.08907633950002491*15 it returns 1.3361450925003737
在int类型转换后

将是1

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

答案 1 :(得分:1)

  

java.lang.Math.random()返回带有正数的double值   符号,大于或等于0.0且小于1.0。

x * 15 = 1

x = 1/15

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

答案 2 :(得分:1)

这是因为强制转换为整数

  

(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)

在这种情况下,条件将为false,因此if中的代码将不会运行,但在乘法后您可能会有一个像1.xx这样的数字。