回答編集履歴

1

edit

2018/07/08 23:20

投稿

mkgrei
mkgrei

スコア8560

test CHANGED
@@ -7,3 +7,73 @@
7
7
 
8
8
 
9
9
  for文で回して、重複があったらカウンターを1ずつ増やしていけば、n回の試行に対して何回重複があったかがわかります。
10
+
11
+
12
+
13
+ ---
14
+
15
+
16
+
17
+ 具体的な書き方はいろいろあるので参考までに。
18
+
19
+
20
+
21
+ ```python
22
+
23
+ import random
24
+
25
+
26
+
27
+ def main(n=100, k=10, seed=0):
28
+
29
+ random.seed(seed)
30
+
31
+
32
+
33
+ def trial(k=k):
34
+
35
+ s = [random.randint(1, 366) for _ in range(k)]
36
+
37
+ s = set(s)
38
+
39
+ if len(s) < k:
40
+
41
+ return True
42
+
43
+ else:
44
+
45
+ return False
46
+
47
+
48
+
49
+ c = 0
50
+
51
+ for _ in range(n):
52
+
53
+ c += trial()
54
+
55
+
56
+
57
+ return c/n*100
58
+
59
+
60
+
61
+ res = []
62
+
63
+ for r in range(1000):
64
+
65
+ ans = main(seed=r)
66
+
67
+ res.append(ans)
68
+
69
+
70
+
71
+ import numpy as np
72
+
73
+ print(np.mean(res), np.std(res))
74
+
75
+
76
+
77
+ print((1 - np.prod([(366-i)/366 for i in range(1, 10)]))*100)
78
+
79
+ ```