2009-05-08 8 views
2

私は既存のVB.NetアプリケーションをJavaに移植する作業をしており、Random.Next(Int32、Int32)と同等のものは見つかりませんでした。Java APIに相当する.NetフレームワークのRandom.Next(Int32、Int32)はありますか?

Java APIにはjava.util.Random.next(int val)しか見つかりませんでした。

Java APIには、.NetフレームワークのRandom.Next(Int32、Int32)に相当するものはありますか?

答えて

3

をちょうど健全性チェックのカップルと、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; 
} 
+0

なぜこれが必要ですか? if((long)upper - lower> Integer.MAX_VALUE){ 新しいIllegalArgumentException()をスローします。 } – MahdeTo

+0

ありがとう、Jon、 これは私にとってはうまくいくかもしれません。 – Murali

+0

@MahdeTo:nextInt(rng、Integer.MIN_VALUE、Integer.MAX_VALUE)を考慮する –

0

まあ、範囲を指定してRandom.nextInt(int)を使用して、最小値を追加するだけですか?すなわちrand.nextInt(12)+ 5

+0

rand.nextInt(max)+分が間違っています。これはmaxより大きい整数を返します。 – dfa

+0

私はなぜ** range **という言葉を使わなかったのですか? –

2

なししかし、あなたはそれをこのように持つことができます:マルクが言うように、

public static int randomInRange(int min, int max){ 
     return min+Random.next(max-min); 
} 
0
Random.Next(x, y)から

コールはRandom.nextInt(y - x) + x;