回答編集履歴

4

わかりやすく追記

2021/12/27 13:25

投稿

ak.n
ak.n

スコア291

test CHANGED
@@ -3,6 +3,10 @@
3
3
 
4
4
 
5
5
  「C言語での乱数生成で常に同じ値となってしまうケースがある」でググると出てきます。
6
+
7
+
8
+
9
+ 何が起きているかというと、srand() は正しく機能していて、 rand() も毎回異なる値を出してはいるが、「7 で割った余りの値」は、シード値の与え方を time() にしている限り 35.5 時間経たないと、変わらない、です。
6
10
 
7
11
 
8
12
 

3

誤記を修正

2021/12/27 13:25

投稿

ak.n
ak.n

スコア291

test CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
  シード値が 127773 変わる、つまり 35.5時間後にならないと、
48
48
 
49
- 7 で割った値が変わりません。
49
+ 7 で割った余りの値が変わりません。
50
50
 
51
51
 
52
52
 

2

誤記を修正しました

2021/12/27 13:20

投稿

ak.n
ak.n

スコア291

test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
 
40
40
 
41
- そのため、7 で割った値はいつまでたっても変わりません。
41
+ そのため、x % 7 値はいつまでたっても変わりません。
42
42
 
43
43
 
44
44
 

1

参照先追加

2021/12/27 13:19

投稿

ak.n
ak.n

スコア291

test CHANGED
@@ -1,4 +1,12 @@
1
1
  一部の環境では、rand() % 7 を使わない方がよさそうです。
2
+
3
+
4
+
5
+ 「C言語での乱数生成で常に同じ値となってしまうケースがある」でググると出てきます。
6
+
7
+
8
+
9
+ 7 のときだけ不具合が出ます。理由はこうです:
2
10
 
3
11
 
4
12