回答編集履歴
5
文言修正
answer
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
出題通りのコードになっていません。
|
2
2
|
- `sum`の加算タイミングがおかしい。
|
3
|
+
試行回数を求める前に加算しています。最後のループ時の試行回数が加算されません。
|
3
4
|
- ループごとに`N`,`Flags`を0クリアしていない。
|
4
5
|
2回目以降は1度しか振らず、`N`は`前ループの値+1`になる。
|
5
6
|
初回ループで10回の試行ですべての目が出たとしても、それだけで`sum`は`1793293664`(`sum`加算タイミング修正前は`1792293655`)になります。
|
4
整数演算指摘追加
answer
CHANGED
@@ -5,7 +5,8 @@
|
|
5
5
|
初回ループで10回の試行ですべての目が出たとしても、それだけで`sum`は`1793293664`(`sum`加算タイミング修正前は`1792293655`)になります。
|
6
6
|
- ループごとに`srand`で初期化している。
|
7
7
|
1秒以内にループが終わった場合次のループで使われる乱数の値が前のループと同じになる。
|
8
|
-
|
8
|
+
- `avg`の計算が整数演算になっている。
|
9
|
+
小数点以下が求まりません。
|
9
10
|
```C
|
10
11
|
srand((unsigned)time(NULL));
|
11
12
|
for (i = 0; i < 1000000; i++) {
|
@@ -17,10 +18,10 @@
|
|
17
18
|
} while (Flags != 0x3FF);
|
18
19
|
sum += N;
|
19
20
|
}
|
20
|
-
avg = sum / 1000000;
|
21
|
+
avg = sum / 1000000.0;
|
21
22
|
```
|
22
23
|
結果
|
23
24
|
```
|
24
25
|
sum = 29282182
|
25
|
-
avg = 29.
|
26
|
+
avg = 29.28
|
26
27
|
```
|
3
文言修正
answer
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
出題通りのコードになっていません。
|
2
|
+
- `sum`の加算タイミングがおかしい。
|
2
3
|
- ループごとに`N`,`Flags`を0クリアしていない。
|
3
4
|
2回目以降は1度しか振らず、`N`は`前ループの値+1`になる。
|
4
|
-
初回ループで10回の試行ですべての目が出たとして、それだけで`sum
|
5
|
+
初回ループで10回の試行ですべての目が出たとしても、それだけで`sum`は`1793293664`(`sum`加算タイミング修正前は`1792293655`)になります。
|
5
|
-
- `sum`の加算タイミングがおかしい。
|
6
6
|
- ループごとに`srand`で初期化している。
|
7
7
|
1秒以内にループが終わった場合次のループで使われる乱数の値が前のループと同じになる。
|
8
8
|
|
2
文言修正
answer
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
出題通りのコードになっていません。
|
2
2
|
- ループごとに`N`,`Flags`を0クリアしていない。
|
3
3
|
2回目以降は1度しか振らず、`N`は`前ループの値+1`になる。
|
4
|
+
初回ループで10回の試行ですべての目が出たとして、それだけで`sum=1793293664`になります。
|
4
5
|
- `sum`の加算タイミングがおかしい。
|
5
6
|
- ループごとに`srand`で初期化している。
|
6
7
|
1秒以内にループが終わった場合次のループで使われる乱数の値が前のループと同じになる。
|
1
文言修正
answer
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
出題通りのコードになっていません。
|
2
2
|
- ループごとに`N`,`Flags`を0クリアしていない。
|
3
|
+
2回目以降は1度しか振らず、`N`は`前ループの値+1`になる。
|
3
4
|
- `sum`の加算タイミングがおかしい。
|
4
5
|
- ループごとに`srand`で初期化している。
|
5
6
|
1秒以内にループが終わった場合次のループで使われる乱数の値が前のループと同じになる。
|