我需要一个非常简单的随机数生成器函数,它将输入参数作为一个范围,例如:
int randomNumberGenerater(int range) {
return (int) (Math.random() * range);
}
问题是当范围等于 1 时,它总是输出 1,而不是在 0 和 1 之间交替。如果可能的话,如何使用适用于任何范围的通用解决方案来解决这个问题。
使用Random
类,它是从给定整数nextInt(int)
生成随机数的方法:0
public static int randomNumberGenerater(int range) {
Random rand = new Random();
return rand.nextInt(range);
}
Random random = new Random();
int randomNumberGenerater(int range) {
return random.nextInt(range);
}
使用Random
类允许您指定范围。
Random rand = new Random();
rand.nextInt(range);
您可以使用ceil()
orfloor()
函数来获得相等数量的 0 和 1。
如果您的随机生成方法给出 0.3 或 0.8,您的方法将始终给您 1。但是如果您使用上述两种方法,您将得到均匀分布的 0 和 1。
你总是可以只使用 apache-commons-lang 的RandomUtils
:
http ://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/math/RandomUtils.html#nextInt(int )