可能性の重複:
Java: random long number in 0 <= x < n rangeジャワ:間隔でランダムlong値
私は区間内のランダムなlong値を生成したいが、それは思われるランダムクラスnextLong() nextInt()のような引数を受け付けません。私はここで何ができますか?
可能性の重複:
Java: random long number in 0 <= x < n rangeジャワ:間隔でランダムlong値
私は区間内のランダムなlong値を生成したいが、それは思われるランダムクラスnextLong() nextInt()のような引数を受け付けません。私はここで何ができますか?
あなたは範囲ベースの長い値をしたい場合は、以下の操作を行います。
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));
あなたが長いの上位と下位のint値を生成するためにnextIntを使用することができます。独自のnextLongメソッドを使ってランダムなクラスを拡張することも可能です(より重大なプログラミングのためのより安全な選択でも構いません)。
nextInt(int n)のJavadocを見てください。 nextLongメソッドは、同じアルゴリズムを使用して実装できます。それを正しいものにするのはちょっと難しいかもしれません。ペンと紙で数学をする準備をする。実績のあるライブラリを使用するのは、単に楽しいコーディングではない場合は賢明です。
これは正しくありません。場合によってはnより大きい値を返します。 @StefanReich True。 –
nの下位ビットは無視されます。私は答えを編集します。 –
@StefanReich悪い例を削除しました。 –
+1ランダムは48ビットのシードを使用するので、すべての可能な 'double'または' long'を生成することはありません。 SecureRandomは低速ですが、すべての可能な値を生成します。 –
なぜnextLong()を使用しませんでしたか? –