Random 是否有与.Net framework';Java API中的下一个(Int32,Int32)?
我正在将一个现有的VB.Net应用程序移植到Java,但找不到与Random.Next(Int32,Int32)等效的 我只能在JavaAPI中找到Random 是否有与.Net framework';Java API中的下一个(Int32,Int32)?,random,java,Random,Java,我正在将一个现有的VB.Net应用程序移植到Java,但找不到与Random.Next(Int32,Int32)等效的 我只能在JavaAPI中找到java.util.Random.next(int-val) Java API中是否存在与.Net framework的Random.Next(Int32,Int32)等效的值?好的,您可以使用指定范围,然后只添加最小值?i、 e.rand.nextInt(12)+5否,但您可以通过以下方式获得: public static int randomIn
java.util.Random.next(int-val)
Java API中是否存在与.Net framework的Random.Next(Int32,Int32)等效的值?好的,您可以使用指定范围,然后只添加最小值?i、 e.rand.nextInt(12)+5否,但您可以通过以下方式获得:
public static int randomInRange(int min, int max){
return min+Random.next(max-min);
}
正如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 nextInt(随机rng、int lower、int upper){
如果(上<下){
抛出新的IllegalArgumentException();
}
if((长)上限-下限>整数.MAX_值){
抛出新的IllegalArgumentException();
}
返回rng.nextInt(上下)+下;
}
调用Random.Next(x,y)
可以转换为类似Random.nextInt(y-x)+x代码>考虑来自Apache Commons Lang的RandomUtils:
为什么需要这样做?如果((长)上下>整数.max值){抛出新的ILLALGALGUMUMENT();} MahdeTo:考虑NEXT(RNG,整数,MIN值,整数.Max值)(特别是考虑调用RNG…NEXTIN……)RAND。NestTin(max)+min是错误的;这将返回大于max的整数?这就是我使用range而不是max这个词的原因