Random 是否有与.Net framework';Java API中的下一个(Int32,Int32)?

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

我正在将一个现有的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 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这个词的原因