web-dev-qa-db-ja.com

範囲内のランダムな倍精度浮動小数点数を生成します

私は次のような2つのダブルスを持っています

double min = 100;
double max = 101;

ランダムジェネレーターでは、minとmaxの範囲の間にdouble値を作成する必要があります。

Random r = new Random();
r.nextDouble();

ただし、ここで範囲を指定できる場所はありません。

117
swati

rangeMinrangeMaxの間のランダムな値を生成するには:

Random r = new Random();
double randomValue = rangeMin + (rangeMax - rangeMin) * r.nextDouble();
201
mob

この質問はJava 7リリースの前に尋ねられましたが、現在、Java 7(以降)APIを使用する別の可能な方法があります。

double random = ThreadLocalRandom.current().nextDouble(min, max);

nextDouble は、最小値(包括的)と最大値(排他的)の間の疑似乱数double値を返します。境界は必ずしもintではなく、doubleにすることもできます。

111
Tunaki

これを使って:

double start = 400;
double end = 402;
double random = new Random().nextDouble();
double result = start + (random * (end - start));
System.out.println(result);

編集:

new Random().nextDouble():0から1までの数値をランダムに生成します.

start:番号を「右に」シフトするための開始番号

end - start:間隔。ランダムは0〜1の数値を与えるため、ランダムはこの数値の0%〜100%を与えます。


編集2: Tks @danielおよび@aaa bbb。私の最初の答えは間違っていました。

35
Topera
import Java.util.Random;
    public class MyClass {
         public static void main(String args[]) {
          Double min = 0.0; //  Set To Your Desired Min Value
          Double max = 10.0; //    Set To Your Desired Max Value
          double x = (Math.random() * ((max - min) + 1)) + min; //    This Will Create 
          A Random Number Inbetween Your Min And Max.
          double xrounded = Math.round(x * 100.0) / 100.0; // Creates Answer To 
          The Nearest 100 th, You Can Modify This To Change How It Rounds.
          System.out.println(xrounded); //    This Will Now Print Out The 
          Rounded, Random Number.
         }
    }
3
Larson Carter
Random random = new Random();
double percent = 10.0; //10.0%
if (random.nextDouble() * 100D < percent) {
    //do
}
1
Tau