-1

我需要一个非常简单的随机数生成器函数,它将输入参数作为一个范围,例如:

int randomNumberGenerater(int range) {
    return (int) (Math.random() * range);
}

问题是当范围等于 1 时,它总是输出 1,而不是在 0 和 1 之间交替。如果可能的话,如何使用适用于任何范围的通用解决方案来解决这个问题。

4

5 回答 5

3

使用Random类,它是从给定整数nextInt(int)生成随机数的方法:0

public static int randomNumberGenerater(int range) {
    Random rand = new Random();
    return rand.nextInt(range);
}
于 2013-09-29T07:36:05.003 回答
2
Random random = new Random();
int randomNumberGenerater(int range) {
    return random.nextInt(range);
}
于 2013-09-29T07:35:26.290 回答
1

使用Random类允许您指定范围。

Random rand = new Random();
rand.nextInt(range);
于 2013-09-29T07:36:25.487 回答
0

您可以使用ceil()orfloor()函数来获得相等数量的 0 和 1。

如果您的随机生成方法给出 0.3 或 0.8,您的方法将始终给您 1。但是如果您使用上述两种方法,您将得到均匀分布的 0 和 1。

于 2013-09-29T07:35:00.127 回答
0

你总是可以只使用 apache-commons-lang 的RandomUtilshttp ://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/math/RandomUtils.html#nextInt(int )

于 2013-09-29T07:36:50.897 回答