回答編集履歴
1
乱数の出し方
answer
CHANGED
@@ -10,4 +10,18 @@
|
|
10
10
|
lowからhighの間の乱数を返すメソッドなのでしょうが、
|
11
11
|
`0 ≦ r < 1`なので、`0 ≦ r * high < high`で、
|
12
12
|
`low ≦ ans < low + high`となり、範囲がずれます。
|
13
|
-
これはたまたまlowが0なので問題にはなっていませんが。
|
13
|
+
これはたまたまlowが0なので問題にはなっていませんが。
|
14
|
+
|
15
|
+
乱数で得られる数は最大最小の差である必要があります。
|
16
|
+
```java
|
17
|
+
static double getRandomDouble(double low, double high) {
|
18
|
+
double ans = 0.0;
|
19
|
+
double r = Math.random();
|
20
|
+
ans = low + r * (high - low);
|
21
|
+
return ans;
|
22
|
+
}
|
23
|
+
```
|
24
|
+
こうすると、`0 ≦ r * (high - low) < high - low`なので、
|
25
|
+
`low ≦ ans < high`となります。
|
26
|
+
ただし、この場合highそのものが範囲に入らないので、intにキャストした場合もhighの値そのものが返ってくることがないことに気を付けてください。
|
27
|
+
highそのものを含めたい場合は、rに掛ける数に1を加えてください。
|