web-dev-qa-db-ja.com

Java:間隔内のランダムな長い値

重複の可能性:
Java:0 <= x <nの範囲のランダムな長い数値

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

14
Mintz

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

 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));
27
Yogendra Singh

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

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

2
COME FROM