진박사의 일상

생일 문제(Birthday Paradox) - Python 본문

프로그래밍/공부

생일 문제(Birthday Paradox) - Python

진박사. 2021. 12. 6. 17:00

생일 문제 (Birthday Pradox)

 

n명의 사람이 있을 때 그 중에서 같은 생일이 있는 사람이 있을 확률은 얼마나 될까?

생일은 365일 (윤년을 고려해도 366)일이므로 367명이 있어야 최소 한명은 확실하게 같은 날짜가 있다고 장담할 수 있을 것이다.

그러나 실제로는 그보다 훨씬 적은 인원에서도 같은 생일을 찾을 수 있다.

2명이 있을 때 그 중에 같은 생일이 있을 확률은 

1 - (364/365) = 0.002739726027397249

3명이 있을때는 

1 - (364/365)*(363/365) = 0.008204165884781345

이다.

이런식으로 파이썬으로 직접 계산을 해보았다.

 

>>> p = 1.0
>>> for i in range(1,366):
	p *= (365-i)/365
	print(i, 1.0-p)

	
1 0.002739726027397249
2 0.008204165884781345
3 0.016355912466550215
4 0.02713557369979347
5 0.040462483649111425
6 0.056235703095975365
7 0.07433529235166902
8 0.09462383388916673
9 0.11694817771107768
10 0.14114137832173312
11 0.1670247888380645
12 0.19441027523242949
13 0.2231025120049731
14 0.25290131976368646
15 0.2836040052528501
16 0.3150076652965609
17 0.3469114178717896
18 0.37911852603153695
19 0.41143838358058027
20 0.443688335165206
21 0.4756953076625503
22 0.5072972343239857
23 0.538344257914529
24 0.568699703969464
25 0.598240820135939
26 0.6268592822632421
27 0.6544614723423995
28 0.6809685374777771
29 0.7063162427192688
30 0.7304546337286439
31 0.7533475278503208
32 0.7749718541757721
33 0.7953168646201543
34 0.8143832388747153
35 0.8321821063798795
36 0.8487340082163846
37 0.864067821082121
38 0.878219664366722
39 0.891231809817949
40 0.9031516114817354
41 0.9140304715618692
42 0.9239228556561199
43 0.9328853685514263
44 0.940975899465775
45 0.9482528433672548
46 0.9547744028332994
47 0.9605979728794225
48 0.9657796093226765
49 0.9703735795779884
50 0.9744319933344283
51 0.9780045093342753
52 0.9811381134839128
53 0.9838769627588515
54 0.9862622888164461
55 0.9883323548852008
56 0.9901224593411699
57 0.9916649793892612
58 0.992989448417817
59 0.994122660865348
60 0.9950887988052908
61 0.9959095748953655
62 0.9966043868309472
63 0.9971904789669755
64 0.9976831073124921
65 0.9980957046404045
66 0.9984400429793998
67 0.9987263912544141
68 0.9989636663083863
69 0.9991595759651571
70 0.9993207531773187
71 0.9994528806414568
72 0.9995608055560187
73 0.9996486444448149
74 0.9997198781738114
75 0.9997774374531652
76 0.999823779243739
77 0.9998609545813611
78 0.9998906683968511
79 0.9999143319493135
80 0.999933108508368
81 0.9999479529215796
82 0.9999596456898823
83 0.9999688221494433
84 0.9999759973260097
85 0.9999815869898157
86 0.9999859253976947
87 0.9999892801659155
88 0.9999918646738591
89 0.9999938483561236
90 0.9999953651998191
91 0.9999965207253437
92 0.9999973976932023
93 0.9999980607467152
94 0.9999985601708488
95 0.9999989349209019
96 0.9999992150512947
97 0.9999994236541013
98 0.9999995783990275
99 0.9999996927510721
100 0.9999997769288606
101 0.9999998386553951
102 0.9999998837434765
103 0.9999999165501119
104 0.9999999403276142
105 0.999999957493643
106 0.9999999698379549
107 0.9999999786799791
108 0.9999999849883688
109 0.9999999894712943
110 0.9999999926443289
111 0.999999994881259
112 0.9999999964519412
113 0.9999999975503813
114 0.9999999983154677
115 0.9999999988462107
116 0.9999999992128945
117 0.9999999994651996
118 0.9999999996380939
119 0.9999999997560852
120 0.9999999998362764
121 0.9999999998905519
122 0.9999999999271345
123 0.9999999999516892
124 0.9999999999681016
125 0.9999999999790258
126 0.9999999999862662
127 0.9999999999910448
128 0.9999999999941852
129 0.9999999999962403
130 0.9999999999975794
131 0.9999999999984481
132 0.9999999999990093
133 0.9999999999993704
134 0.9999999999996015
135 0.9999999999997489
136 0.9999999999998425
137 0.9999999999999016
138 0.9999999999999388
139 0.9999999999999621
140 0.9999999999999767
141 0.9999999999999857
142 0.9999999999999912
143 0.9999999999999947
144 0.9999999999999968
145 0.999999999999998
146 0.9999999999999988
147 0.9999999999999993
148 0.9999999999999996
149 0.9999999999999998
150 0.9999999999999999
151 0.9999999999999999
152 1.0
153 1.0
154 1.0
155 1.0
156 1.0
157 1.0
158 1.0
159 1.0
160 1.0
161 1.0
162 1.0
163 1.0
164 1.0
165 1.0
166 1.0
167 1.0
168 1.0
169 1.0
170 1.0
171 1.0
172 1.0
173 1.0
174 1.0
175 1.0
176 1.0
177 1.0
178 1.0
179 1.0
180 1.0
181 1.0
182 1.0
183 1.0
184 1.0
185 1.0
186 1.0
187 1.0
188 1.0
189 1.0
190 1.0
191 1.0
192 1.0
193 1.0
194 1.0
195 1.0
196 1.0
197 1.0
198 1.0
199 1.0
200 1.0
201 1.0
202 1.0
203 1.0
204 1.0
205 1.0
206 1.0
207 1.0
208 1.0
209 1.0
210 1.0
211 1.0
212 1.0
213 1.0
214 1.0
215 1.0
216 1.0
217 1.0
218 1.0
219 1.0
220 1.0
221 1.0
222 1.0
223 1.0
224 1.0
225 1.0
226 1.0
227 1.0
228 1.0
229 1.0
230 1.0
231 1.0
232 1.0
233 1.0
234 1.0
235 1.0
236 1.0
237 1.0
238 1.0
239 1.0
240 1.0
241 1.0
242 1.0
243 1.0
244 1.0
245 1.0
246 1.0
247 1.0
248 1.0
249 1.0
250 1.0
251 1.0
252 1.0
253 1.0
254 1.0
255 1.0
256 1.0
257 1.0
258 1.0
259 1.0
260 1.0
261 1.0
262 1.0
263 1.0
264 1.0
265 1.0
266 1.0
267 1.0
268 1.0
269 1.0
270 1.0
271 1.0
272 1.0
273 1.0
274 1.0
275 1.0
276 1.0
277 1.0
278 1.0
279 1.0
280 1.0
281 1.0
282 1.0
283 1.0
284 1.0
285 1.0
286 1.0
287 1.0
288 1.0
289 1.0
290 1.0
291 1.0
292 1.0
293 1.0
294 1.0
295 1.0
296 1.0
297 1.0
298 1.0
299 1.0
300 1.0
301 1.0
302 1.0
303 1.0
304 1.0
305 1.0
306 1.0
307 1.0
308 1.0
309 1.0
310 1.0
311 1.0
312 1.0
313 1.0
314 1.0
315 1.0
316 1.0
317 1.0
318 1.0
319 1.0
320 1.0
321 1.0
322 1.0
323 1.0
324 1.0
325 1.0
326 1.0
327 1.0
328 1.0
329 1.0
330 1.0
331 1.0
332 1.0
333 1.0
334 1.0
335 1.0
336 1.0
337 1.0
338 1.0
339 1.0
340 1.0
341 1.0
342 1.0
343 1.0
344 1.0
345 1.0
346 1.0
347 1.0
348 1.0
349 1.0
350 1.0
351 1.0
352 1.0
353 1.0
354 1.0
355 1.0
356 1.0
357 1.0
358 1.0
359 1.0
360 1.0
361 1.0
362 1.0
363 1.0
364 1.0
365 1.0

보다시피 이미 50명대 후반에서부터 같은 생일이 있을 확률이 거의 99%나 된다.

이것이 사람의 직감과 수학적 사실이 일치하지 않는다는 모순으로 여겨져 생일의 역설(Birthday Paradox)이라고 불리는 것이다.

 

이러한 내용은 보안의 암호학 측면에서도 중요한 문제가 되는 부분디ㅏ.

'프로그래밍 > 공부' 카테고리의 다른 글

[데베시] 13강 - Normalization  (0) 2021.12.15
[데베시] 12강  (0) 2021.12.07
[컴보] 12강 - 포인터  (0) 2021.12.06
[데베시] 10강  (0) 2021.11.24
[데베시] 9장 복잡한 SQL  (0) 2021.11.20