der Wille zur Macht,

[네이버블로그이관/확률과통계/이항분포] 복권 살 때 최소 몇 장을 사야 당첨 확률이 절반 이상 될까?


글 원본 : https://blog.naver.com/tigerkey10/222265574316

이 글은 내가 지킬 블로그를 만들기 전,

네이버 블로그에 공부 내용을 기록할 때 학습하고 복습하면서 기록했던 글을 옮겨온 것이다.

네이버 블로그에서 글을 옮겨와 지킬 블로그에도 기록해둔다.

모든 공부 과정을 기록으로 남겨 치열했던 시간들을 기록으로 남기고,

미래에 전달해 스스로 동기부여할 것이다. 또한 반복해서 학습. 복습하는 과정에서

어떤 개념에 대한 내 이해가 어떻게 변화.발전 했는지 관찰함으로써 스스로의 학습 정도를 돌아보는 거울로 삼고자 한다.


전 국민의 관심사 복권, 최소한 몇 장을 사야 ‘당첨 가능성을 노려보겠다’ 고 말할 수 있을까?

로또 번호는 45개 번호 중 여섯개를 무작위로 선택하는 것이다.

각 시행은 독립이며, 각 숫자는 한번씩만 뽑을 수 있다.

여섯개 번호는 순서가 정해져 있지 않는 ‘조합’으로 뽑는 것이다.

$\Rightarrow$ 1등 당첨번호 6자리는 8,145,060 개 조합 중 1개인 경우다.

따라서 로또 1등 당첨 확률은 1/8,145,060 이다.

​ 위 방식으로 로또 1등 당첨 확률을 구할 수도 있고, 접근 방식을 달리 해서 같은 결과를 계산할 수도 있다.

로또 당첨번호 여섯 자리의 확률은 다음과 같다.

  1. 여섯 자리 중 하나의 확률은 6/45이다. 45개 숫자 중에 여섯개가 후보로 뽑힐 수 있으니까 그렇다.

  2. 두 번째로 뽑을 수 있는 번호의 확률은 5/44이다. 1번에서 숫자 하나 뽑았기 때문에 표본공간 오메가는 44가 되고, 당첨번호도

여섯 개 중에서 하나 뽑았으니 다섯개 중 하나 뽑을 수 있기 때문이다.

  1. 세 번째로 뽑을 수 있는 숫자의 확률은 4/43이다. 이유는 1,2와 같다.

이와 같은 순서로 각 당첨번호 뽑는 시행의 확률을 계산하면, 6/45, 5/44, 4/43, 3/42, 2/41, 1/40 이렇게 나온다.

각각의 시행은 서로 ‘독립’이다. 따라서 6/45* 5/44* 4/43* 3/42* 2/41* 1/40 = 1/8,145,060 으로 당첨 번호 여섯자리를 동시에 고려한 확률을 구할 수 있다.

여기서 이렇게 생각할 수 있다. “위 식만 보면 45중에 6개를 뽑았다는 이유로 두번째 시행에서는 하나가 줄은 44중에 5개를 뽑지 않느냐?,

따라서 각 시행은 서로 영향을 미친 것이고, 결과적으로 독립이 아니지 않은가?”

사건의 독립과 시행의 독립을 구별지어 생각하면, 위 물음에 대한 해답을 얻을 수 있다.

먼저 사건의 독립은 각 사건이 독립이라는 것이다. 확률과 통계에서 ‘사건’의 수학적 정의는 다음과 같다.

사건 : 전체 표본공간 오메가의 부분집합 & 표본들의 집합

두 사건이라 함은 공통된 표본공간 또는 공통된 전체집합 오메가를 고려한다는 전제가 깔려있다.

따라서 A,B사건이 독립이라면, 이는 곧

‘같은 전체집합에 속하는 두 부분집합이 서로 독립’이라는 의미다. <같은 표본공간을="" 고려한다는="" 전제="">

한편, 시행의 독립은 각 시행이 독립이라는 말이다. 시행의 수학적 정의는 다음과 같다.

‘반복가능한, 그리고 일정한 확률 갖는 표본이 결과로 나오는 실험’.

위 정의를 이용하면 ‘두 시행의 독립이란 : 각 시행 결과로 나오는 두 사건 확률이 상대 시행에 영향을 받지 않음’을 의미한다.

무슨 말인가.

예를 들어 주사위를 두 번 던지는 시행을 한다고 가정하자.

두번 던지는 시행의 결과로 나올 수 있는 표본공간 오메가는 {1,2,3,4,5,6}이 아니다.

{(1,1), (1,2)…..(6,6)} 이다.

여기서 ‘두 사건이 독립인가’ 고려하려면 (1,1) 과 (1,2)가 서로 독립인가? 물을 수 있다.

하지만 각 시행의 관점에서 생각해보자. 두번 주사위를 던진다는 말은 어찌됬든 첫번째 던지는 시행, 두번째 던지는 시행 이렇게

각 시행을 구분할 수 있을 것이다. 첫번째 던지는 시행의 결과로 {2} 가 나왔다고 해보자. 이 {2}의 표본공간은 {1,2,3,4,5,6}이다.

두번째 던지는 시행의 결과로 {3}이 나왔다고 해보자. 이 {3}의 표본공간은 {1,2,3,4,5,6}이다.

{2}의 확률은 1/6, {3}의 확률은 1/6이다. 주사위를 앞으로 백만 번을 더 던져도 각 시행에서 {2} 그리고 {3}이 나오는 확률은

각각 1/6으로 변하지 않을 것이다(주사위에 별다른 흠결, 조작이 없다면 이론상)

즉 첫번째 시행은 두번째 시행 결과로 나오는 사건의 확률에 영향을 주지 못 한다.

곧, 첫번째 시행과 두 번째 시행은 서로 영향 미치지 못하는 ‘독립’이다.

위 로또 문제를 다시 가져와보자.

첫번째 당첨번호의 표본공간 오메가의 크기는 45이다. 그리고 이 중에서 6개를 뽑는 시행이었다.

두번째 당첨번호의 표본공간 오베가의 크기는 44였다. 그리고 이 중에서 5개를 뽑는 시행이었다.

첫번째 시행은 45중에 6개를 뽑는 것이었고, 두번째 시행은 44중에 5개를 뽑는 것 이었다.

위 주사위 예시에서 첫번째 시행과 두번째 시행은 각각 표본공간을 {1,2,3,4,5,6}으로 가지고 있었다.

로또에서는 첫번째 시행과 두번째 시행이 각각 표본공간을 45개짜리 하나, 44개짜리 하나 가지고 있는 것이다.

곧, 시행을 할 때 마다 표본공간이 ‘새롭게’ 바뀐다는 말이다.

각각 표본공간을 분리된 ‘별개’로 생각해보자. 그리고 각각의 분리된 표본공간에서 6개를 뽑거나 5개를 뽑는 시행을 한다.

45개 중에 6개를 뽑는 시행과 44개 중에 5개를 뽑는 시행의 확률은 서로 영향을 미치지 않음을 알 수 있다. 서로 분리된 별개의, 새로운

표본공간을 고려하기 때문이다. 각 시행만 놓고 생각해 보면 각 시행은 서로 영향 안 미치는 ‘독립’이다.

정리하면

‘시행의 독립’은 각각 다른 표본공간을 놓고 이루어지는 시행이 서로 ‘독립’이라는 의미다

<각 시행은="" 서로="" 다른="" 표본공간을="" 고려한다는="" 전제="">

따라서 6/45* 5/44* 4/43* 3/42* 2/41* 1/40 = 1/8,145,060 으로 당첨 번호 여섯자리를 동시에 고려한 확률을 구할 수 있다.


베르누이 시행, 이항분포

번호 일곱자리를 뽑는 매 시행은 결과가 당첨/꽝 두 개의 결과만 존재하고, 여섯자리 당첨번호 찍을 확률은 1/8,145,060으로 매번

동일하다. == 베르누이 시행이다.

이때 이 베르누이 시행을 n번 시행으로 확대 한다면(로또 여섯자리 뽑는 시행을 n번 시행한다면) n번 시행의 결과값들은 이항분포를 따를 것이다.

이제 그러면 확률변수(당첨/꽝), 확률변수가 따르는 확률분포를 알았으니, n번 시행 중에 당첨번호 여섯 자리를 뽑을 확률을 알아보자.

Screen Shot 2021-08-31 at 15 26 16

이항분포의 확률질량함수는 위 f(x)식과 같다. 위 식을 파이썬을 이용해서 계산, n번 여섯자리를 뽑는 시행을 할 때, x번 당첨될 확률을

알아보자.

파이썬으로 풀어보자

import math 
from math import factorial

팩토리얼 계산에는 다양한 방법이 있지만, 이번에 나는 math 모듈에서 factorial함수를 불러다 썼다.

def B(x,n) : 

    n_f = math.factorial(n)
    x_f = math.factorial(x)
    n_x = math.factorial(n-x)


    p1 = (1/8145060)**x
    p2 = (8145059/8145060)**(n-x)

    result = ((n_f)/(x_f*n_x))*p1*p2
    return result

위와 같이 확률질량 함수를 정의했다. result가 확률질량함수라고 보면 된다.

여섯자리 숫자가 적혀있는 복권을 5 게임 하는 경우

n = 5
list1 = []
for x in range(n+1) : 
    B(x,n)
    list1.append(B(x,n))
range_list = list(range(0,(n+1))) #확률변수 X
per_list = list1 #확률변수 X에서의 확률값들

import matplotlib.pyplot as plt
plt.bar(x=range_list, height=per_list,width=0.7)
plt.show()

Screen Shot 2021-08-31 at 15 28 06

5번 당첨번호를 찍는 시행의 확률질량함수를 계산해보니, 확률변수 0부터 5까지에서 확률분포가 위 그래프와 같이 나타났다.

print('당첨 안 되는 확률 : %s' %round(list1[0],6)) #당첨 안 되는 확률
print('1장 이상 당첨될 확률 : %s' %round(1-list1[0],6)) #1장 이상 당첨될 확률

Screen Shot 2021-08-31 at 15 28 45

이 경우, 0이 아닌 확률변수 값들의 확률값을 더해주면 ‘5장 복권 중 최소 1장 이상 당첨될 확률’이 나온다. 곧, ‘당첨될 확률’이다.

0의 경우는 5번 뽑았는데 0번 성공할 확률, 그러니까 당첨 안 될 확률이다.

계산 결과를 소수 여섯자리에서 반올림해보면 당첨 안 될 확률이 1, 1장 이상 당첨될 확률이 0.0으로 나왔다.

곧, 다섯장 사면 한 장도 당첨 안 된다고 봐야 한다.

여섯자리 숫자가 적혀있는 복권을 1000 게임 하는 경우

그러면 1000번 뽑는다고 가정할때는 어떨까?

n = 1000
list1 = []
for x in range(n+1) : 
    B(x,n)
    list1.append(B(x,n))
range_list = list(range(0,(n+1))) #확률변수 X
per_list = list1 #확률변수 X에서의 확률값들

import matplotlib.pyplot as plt
plt.bar(x=range_list, height=per_list,width=0.7)
plt.show()

Screen Shot 2021-08-31 at 15 29 45

1000장을 샀다고 가정할 때도, 여섯자리를 모두 맞춰서 로또 1등에 당첨될 확률은 0과 다를 바 없었다.

혹시 로또 당첨 확률을 알기 위해 이 글을 보시는 분들이 계시다면, ‘마음편하게 사회에 기부활동 한다고 생각하고 구입하시는게 좋겠다’

고 권해드리고 싶다.

또한 로또 회차별로 번호를 뽑는 각 시행이 독립시행이기에 또는 모두의 예상처럼 독립시행이라면, 이전 회차 번호 여섯 자리를 가지고

다음 회차 번호 여섯 자리를 예측하려는 것은 별 의미가 없는 행위라고 할 수 있겠다. 지난 시행 번호와 이번 시행 번호가 무관하기에,

서로 연관점을 찾을 수 없기 때문이다. 독립시행의 결과인 두 번호 간에 연관성을 찾으려는 노력은 ‘도박사의 오류’로 보여진다.