回答編集履歴
1
乱数の出し方
test
CHANGED
@@ -23,3 +23,31 @@
|
|
23
23
|
`low ≦ ans < low + high`となり、範囲がずれます。
|
24
24
|
|
25
25
|
これはたまたまlowが0なので問題にはなっていませんが。
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
乱数で得られる数は最大最小の差である必要があります。
|
30
|
+
|
31
|
+
```java
|
32
|
+
|
33
|
+
static double getRandomDouble(double low, double high) {
|
34
|
+
|
35
|
+
double ans = 0.0;
|
36
|
+
|
37
|
+
double r = Math.random();
|
38
|
+
|
39
|
+
ans = low + r * (high - low);
|
40
|
+
|
41
|
+
return ans;
|
42
|
+
|
43
|
+
}
|
44
|
+
|
45
|
+
```
|
46
|
+
|
47
|
+
こうすると、`0 ≦ r * (high - low) < high - low`なので、
|
48
|
+
|
49
|
+
`low ≦ ans < high`となります。
|
50
|
+
|
51
|
+
ただし、この場合highそのものが範囲に入らないので、intにキャストした場合もhighの値そのものが返ってくることがないことに気を付けてください。
|
52
|
+
|
53
|
+
highそのものを含めたい場合は、rに掛ける数に1を加えてください。
|