私は次のような2つのダブルスを持っています
double min = 100;
double max = 101;
ランダムジェネレーターでは、minとmaxの範囲の間にdouble値を作成する必要があります。
Random r = new Random();
r.nextDouble();
ただし、ここで範囲を指定できる場所はありません。
rangeMin
とrangeMax
の間のランダムな値を生成するには:
Random r = new Random();
double randomValue = rangeMin + (rangeMax - rangeMin) * r.nextDouble();
この質問はJava 7リリースの前に尋ねられましたが、現在、Java 7(以降)APIを使用する別の可能な方法があります。
double random = ThreadLocalRandom.current().nextDouble(min, max);
nextDouble
は、最小値(包括的)と最大値(排他的)の間の疑似乱数double値を返します。境界は必ずしもint
ではなく、double
にすることもできます。
これを使って:
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。私の最初の答えは間違っていました。
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.
}
}
Random random = new Random();
double percent = 10.0; //10.0%
if (random.nextDouble() * 100D < percent) {
//do
}