回答編集履歴

1

コード追加

2020/06/18 12:13

投稿

hope_mucci
hope_mucci

スコア4447

test CHANGED
@@ -29,3 +29,149 @@
29
29
 
30
30
 
31
31
  以上の考え方が正しいなら、回答は25/33になるはずです。
32
+
33
+
34
+
35
+ ### 追記
36
+
37
+ 全然質問者から反応ないけど回答を実装したソースです。まだ質問を見てくれている方へ。
38
+
39
+ ```python
40
+
41
+ from collections import defaultdict
42
+
43
+ # ラッキー判定
44
+
45
+ def lucky(p,c):
46
+
47
+ return p < c
48
+
49
+
50
+
51
+ # 探索関数。引数はそれまでのサイコロの出目のリスト
52
+
53
+ def search(l):
54
+
55
+ global cnt
56
+
57
+ p = l[-1] # リストの一番最後の出目
58
+
59
+ # 10投して全部ノーラッキーだったら総数にカウントする
60
+
61
+ # リストの要素数が10だったら条件成立
62
+
63
+ if len(l) == N:
64
+
65
+ #
66
+
67
+ cnt += 1
68
+
69
+ cnt_d[p] += 1
70
+
71
+ return
72
+
73
+ # それ以外の場合は次のサイコロ試行。1~6
74
+
75
+ for c in range(1,7):
76
+
77
+ # ラッキーだったらそこで探索終了
78
+
79
+ if lucky(p,c):
80
+
81
+ pass
82
+
83
+ else:
84
+
85
+ # ノーラッキーだったら引数のリストに今の出目を加えて次の試行へ
86
+
87
+ search(l + [c])
88
+
89
+
90
+
91
+ cnt = 0 # ノーラッキー総数
92
+
93
+ cnt_d = defaultdict(int) # 最後の出目別ノーラッキー数
94
+
95
+ N = 10 # サイコロ投擲回数
96
+
97
+ total = 6**N # 10回のサイコロ投擲総組み合わせ数
98
+
99
+
100
+
101
+ # 第1投目を初期値として与えて探索開始
102
+
103
+ for i in range(1,7):
104
+
105
+ search([i])
106
+
107
+
108
+
109
+ #10回振って一度もラッキーしない確率
110
+
111
+ print(cnt,'/',total)
112
+
113
+ # うち最後の目別のカウント
114
+
115
+ print(cnt_d)
116
+
117
+
118
+
119
+ # 分母は10投ノーラッキー数ごとに11投目の出目数の乗算
120
+
121
+ fb = cnt*6
122
+
123
+ # 分子はラッキー総数
124
+
125
+ fi = 0
126
+
127
+ # ラッキー数計算
128
+
129
+ for i in range(1,7):
130
+
131
+ fi += (cnt_d[i])*(6-i)
132
+
133
+
134
+
135
+ # 10投目までノーラッキーのとき、11投目にラッキーが出る確率
136
+
137
+ print(fi/fb)
138
+
139
+ print(fi,'/',fb)
140
+
141
+ from fractions import Fraction
142
+
143
+ print(Fraction(fi,fb))
144
+
145
+
146
+
147
+ ''' >> 出力
148
+
149
+ # 10回振って一度もラッキーしない確率
150
+
151
+ 3003 / 60466176  
152
+
153
+ # うち最後の目別のカウント
154
+
155
+ defaultdict(<class 'int'>, {1: 2002, 2: 715, 3: 220, 4: 55, 5: 10, 6: 1})
156
+
157
+ # 10投目までノーラッキーのとき、11投目にラッキーが出る確率
158
+
159
+ 0.7575757575757576
160
+
161
+ # 分数にすると
162
+
163
+ 13650 / 18018
164
+
165
+ # 約分すると
166
+
167
+ 25/33
168
+
169
+
170
+
171
+ CPU times: user 10 ms, sys: 0 ns, total: 10 ms
172
+
173
+ Wall time: 9.72 ms
174
+
175
+ '''
176
+
177
+ ```