java - 数学随机场景

标签 java math

示例 1:50 + (int)(Math.random() * 50) 返回 50 到 99 之间的整数。小数形式的最大数字为 99.9 循环。

示例 2: 34 ​​+ (int)(Math.random() * 21) 返回一个介于 34 和 55 之间的整数。 小数形式的最大数为 54.9 循环。

为什么示例 2 返回 55 而不是 54?

最佳答案

Math.random() 返回[0.0, 1.0)范围内的小数,

所以你的假设在每个例子中都是正确的

对于第一个例子,50 + 49.9 = 99.9

对于第二个例子,34 + 20.9 = 54.9

我不确定你在哪里得到 55 例如 2 因为当小数转换为 int 时,小数将失去其精度,有效地将它向下舍入以创建最大值 99 例如 1 和 54 例如 2

编辑

书上写错了,如果你想让范围是34到55,代码就得是

34 + (int)(Math.random() * 22)

关于java - 数学随机场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44875891/

相关文章:

java - 优先组合而不是继承

algorithm - 能被17整除的数?

c++ - 缺少类模板 "calc"的参数列表

Javascript 循环性能 : Counting occurrences of a number in a finite series

math - 计算笛卡尔平面中物体的面积

Javascript 在做加法时增加额外的精度

java - 在循环中重新创建ExecutorService以进行批处理

Java JTable 头不显示

Java - 检查部分对象相等性

java - 为什么 Java 5+ API 不利用协变返回类型?