如何使用math.random类生成随机整数

时间:2015-07-26 12:34:59

标签: java class math random int

我遇到0-9方法的问题,因为它不会返回随机整数。结果必须是int范围public class RandNumGenerator { public static int RandInt() { int n = (int) Math.random() * 10; return n; } public static void main(String[] args) { RandInt(); } } 并且必须使用math.random类。这是我的代码:

String value = valueCommingFromSomewhere;
if (value == null) {
    value = "myDefaultValue";
}

4 个答案:

答案 0 :(得分:5)

你应该在乘以10后将double转换为int:

int n = (int) (Math.random() * 10);

否则你总是得到0(因为Math.random()<1.0,所以(int)Math.random()总是0)。

答案 1 :(得分:3)

Casting has higher priority than *所以代码

(int) Math.random() * 10;

相同
((int) Math.random()) * 10;

,因为Math.random()会将范围[0; 1)(1 - 排除)中的值转换为int

(int) Math.random()

将生成0,乘以10也将返回0

您可能想要使用

(int) (Math.random() * 10)

或更容易阅读和维护Random#nextInt(max)以生成范围[0; max)max - 独家)

答案 2 :(得分:1)

您需要在乘法

周围加上括号
int n = (int) (Math.random() * 10);

正在发生的事情是

int n = ((int) Math.random()) * 10;

因为Math.random()总是大于或等于0且小于1,将其转换为整数将始终等于零。将它乘以10将无能为力。

答案 3 :(得分:-1)

您不应该使用Math.random()来生成随机整数,因为它会生成随机浮点数(即十进制数)

你应该做类似的事情

Random myRandom = new Random();
int randomInt = myRandom.nextInt(10);