3

私は、-10 から 10 までのランダムな double を生成しようとしている Java 初心者です。私はintで次のことを行うことを知っています:

Random r = new Random(); 
int i = -10 + r.nextInt(21);

ただし、ダブルでは、これは機能しません。

Random r = new Random(); 
double i = -10 + r.nextDouble(21); 

ダブルスの場合の対処法を誰か教えてください。

4

4 に答える 4

6

これを試して:

    Random r = new Random(); 
    double d = -10.0 + r.nextDouble() * 20.0; 

注: 20.0 である必要があります (21.0 ではありません)。

于 2013-02-24T19:29:28.110 に答える
4

これを使用して、指定された範囲で値を生成してみてください。

Random random = new Random();
double value = min + (max - min) * random.nextDouble();

またはこれを使用してみてください:

public double doubleRandomInclusive(double max, double min) {
   double r = Math.random();
   if (r < 0.5) {
      return ((1 - Math.random()) * (max - min) + min);
   }
   return (Math.random() * (max - min) + min);
}
于 2013-02-24T19:28:55.747 に答える
0

この乱数ジェネレーターのシーケンスから、0.0 から 1.0 の間で均一に分散された次の疑似乱数の double 値を返します。

nextDouble はパラメーターを取りません。範囲が何であれ、それを掛けるだけです。またはより一般的に:

minimum + (maximum - minimum) * r.nextDouble();
于 2013-02-24T19:28:44.613 に答える
0

nextDouble(int)にメソッドはありませんRandom。これを使って:

double i = -10.0 + r.nextDouble() * 20.0; 

API リファレンス

于 2013-02-24T19:28:52.723 に答える