隨機雙我有兩個雙打像下面產生一系列
double min = 100;
double max = 101;
,並用隨機生成的,我需要創建最小和最大的範圍之間的雙重價值。
Random r = new Random();
r.nextDouble();
但這裏沒有什麼地方可以指定範圍。
隨機雙我有兩個雙打像下面產生一系列
double min = 100;
double max = 101;
,並用隨機生成的,我需要創建最小和最大的範圍之間的雙重價值。
Random r = new Random();
r.nextDouble();
但這裏沒有什麼地方可以指定範圍。
要生成rangeMin
和rangeMax
之間的隨機值:
Random r = new Random();
double randomValue = rangeMin + (rangeMax - rangeMin) * r.nextDouble();
使用此:
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%這個數字的100%,因爲隨機給你一個從0數1
編輯2: 韓國社交協會@daniel和@aaa BBB。我的第一個回答是錯誤的。
這個問題被問的Java 7發佈之前,但現在,有使用Java 7(及以上)API另一種可能的方式:
double random = ThreadLocalRandom.current().nextDouble(min, max);
nextDouble
將返回最小值之間的僞雙值(含)最大(獨家)。邊界不一定是int
,可以是double
。
調用需要api 21 – Nepster 2017-02-01 10:25:10
這通常是正確的,但要小心它的限制。如果你使用'double rangeMax = Double.MAX_VALUE;'和'double rangeMin = -rangeMax;'你總是會得到一個無限的值作爲回報。你可能想檢查'Double.valueOf(rangeMax-rangeMin).isInfinite()'。 – lre 2014-04-07 10:55:13