15

重複の可能性:
Java: 0 <= x < n の範囲の長い乱数

インターバルでランダムな long 値を生成したいのですが、Random クラスの nextLong() は nextInt() のような引数を受け入れないようです。ここで何ができますか?

4

2 に答える 2

27

範囲ベースの長い値が必要な場合は、以下を実行します。

 long LOWER_RANGE = 0; //assign lower range value
 long UPPER_RANGE = 1000000; //assign upper range value
 Random random = new Random();


 long randomValue = LOWER_RANGE + 
                           (long)(random.nextDouble()*(UPPER_RANGE - LOWER_RANGE));
于 2012-12-05T14:33:39.310 に答える
2

nextInt を使用して、long の上位および下位の int を生成できます。独自の nextLong メソッドを使用して Random クラスを拡張することも可能です (ただし、より本格的なプログラミングでは合成がより安全な選択になる可能性があります)。

nextInt(int n) の Javadoc を見てください。nextLong メソッドは、同じアルゴリズムを使用して実装できます。それを正しくするのは少し難しいかもしれません。ペンと紙を使って計算する準備をします。楽しみのためだけにコーディングしているわけではない場合は、実績のあるライブラリを使用するのが賢明です。

于 2012-12-05T17:27:49.353 に答える