【发布时间】:2011-11-01 02:11:10
【问题描述】:
这是一个非常简单的 Java(尽管可能适用于所有编程)问题:
Math.random()返回一个介于 0 和 1 之间的数字。
如果我想返回一个介于 0 和 00 之间的整数,我会这样做:
(int) Math.floor(Math.random() * 101)
在一到一百之间,我会这样做:
(int) Math.ceil(Math.random() * 100)
但是如果我想得到一个介于 3 和 5 之间的数字怎么办?会不会像下面的语句:
(int) Math.random() * 5 + 3
我在java.lang.util.Random 中知道nextInt()。但我想通过Math.random() 学习如何做到这一点。
【问题讨论】:
-
对于 [3,5]:
(int)Math.floor(Math.random()*3) + 3 -
顺便说一句:范围是从 0.0(含)到 1.0(你永远不会得到 1.0)使用 nextInt() 是一个更好的选择,不仅更简单而且更快。
-
使用
Math.ceil是错误的,当Math.random()返回0时会给出错误的结果。 -
如果 Math.floor 返回 0.029 会怎样?如何始终通过单个语句获得两位数?