这是一个非常简单的Java(尽管可能适用于所有编程)问题:
Math.random()返回介于零和一之间的数字。
Math.random()
如果我想返回零到一百之间的整数,我会这样做:
(int) Math.floor(Math.random() * 101)
在一百到一百之间,我会做:
(int) Math.ceil(Math.random() * 100)
但是,如果我想得到三到五之间的数字怎么办?它会像下面的语句:
(int) Math.random() * 5 + 3
我知道nextInt()在java.lang.util.Random。但是我想学习如何使用Math.random()。
nextInt()
java.lang.util.Random
int randomWithRange(int min, int max) { int range = (max - min) + 1; return (int)(Math.random() * range) + min; }
输出randomWithRange(2, 5)10次:
randomWithRange(2, 5)
5 2 3 3 2 4 4 4 5 4
边界是包含边界的,即[2,5],并且min必须小于max上面的示例。
[2,5]
编辑:如果有人要尝试并变得愚蠢和扭转min和max,你可以将代码更改为:
int randomWithRange(int min, int max) { int range = Math.abs(max - min) + 1; return (int)(Math.random() * range) + (min <= max ? min : max); }
EDIT2:关于doubles 的问题,只是:
double randomWithRange(double min, double max) { double range = (max - min); return (Math.random() * range) + min; }
再说一次,如果你想证明这一点,那就是:
double randomWithRange(double min, double max) { double range = Math.abs(max - min); return (Math.random() * range) + (min <= max ? min : max); }