【发布时间】:2009-05-08 09:50:17
【问题描述】:
我正在将现有的 VB.Net 应用程序移植到 Java,但找不到与 Random.Next(Int32, Int32) 等效的应用程序。
我只能在 Java API 中找到 java.util.Random.next(int val)。
Java API 中有 .Net 框架的 Random.Next(Int32, Int32) 的等价物吗?
【问题讨论】:
我正在将现有的 VB.Net 应用程序移植到 Java,但找不到与 Random.Next(Int32, Int32) 等效的应用程序。
我只能在 Java API 中找到 java.util.Random.next(int val)。
Java API 中有 .Net 框架的 Random.Next(Int32, Int32) 的等价物吗?
【问题讨论】:
正如 Marc 所说,只需调整 Random.nextInt(int),并进行一些健全性检查:
public static int nextInt(Random rng, int lower, int upper) {
if (upper < lower) {
throw new IllegalArgumentException();
}
if ((long) upper - lower > Integer.MAX_VALUE) {
throw new IllegalArgumentException();
}
return rng.nextInt(upper-lower) + lower;
}
【讨论】:
不,但你可以这样:
public static int randomInRange(int min, int max){
return min+Random.next(max-min);
}
【讨论】:
考虑 Apache Commons Lang 的 RandomUtils:
http://commons.apache.org/lang/apidocs/org/apache/commons/lang/math/RandomUtils.html
【讨论】:
那么,您可以使用Random.nextInt(int) 指定范围,然后只添加最小值吗?即 rand.nextInt(12) + 5
【讨论】:
调用Random.Next(x, y) 可以翻译成类似Random.nextInt(y - x) + x;
【讨论】: