A.I(인공지능)/Datascience

큰수의 법칙을 이해해보자!

JackSmith 2023. 10. 22.

큰수의 법칙?

경험적 확률과 수학적 확률 사이의 관계를 나타내는 법칙, 표본집단의 크기가 커지면
그 표본평균이 모평균에 가까워짐을 의미.
따라서 취합하는 표본의 수가 많아질수록 통계적 정확도는 상승

주사위를 돌린다고 가정해보자.

각 사건의 확률이 동일한 일반적인 주사위가 있다고 해보자. 이 주사위를 던질 경우 각각의 숫자가 나올 확률은 1/6이다.

이를 백분율로 나타내보면, 16.67%이다.

따라서 주사위를 6번 던진다면 모든 숫자가 1번씩 나와야 하는개 대략적인 논리이다.

하지만 천운?이 따라서, 한평생 쓸 운을 모두 끌어다가 써서 20번 연속으로 1이 나왔다고 해보자.

그럼에도 불구하고 총 시행횟수가 늘어나면 어쩔수없이 다른 숫자들이 나올 확률이 커져서 16.67%에 수렴한다는 것이 통계학 세계에서 통용되는 논리이다.

여기서의 핵심은 시행횟수를 늘리는것이다. 처음에 오차가 많이 발생해도,

 

그래?그럼 더 많이 주사위를 던져보자!
그래도 균형이 안맞네? 더 많이 던져보자. 그러면 우리가 생각하는 확률값에 접근하게 될 거야!

이게 큰수의 법칙의 핵심 논리이다.

아래 코드를 직접 복사해서 돌려보자

 

코드>

import random

def jusawi(num):
    cnt = 0
    doors = ['1','2','3','4','5','6']


    #주사위를 던졌을때, 1이 나오는 경우의 수
    for _ in range(num):
        # 섞기
        random.shuffle(doors)
        if doors[0] == '1':
            cnt += 1

    return cnt

num_sim = 60
one = jusawi(num_sim)
print(f"6분의 1확률은 {1/6:.2%}이다. \n큰수의 법칙에 의해 샘플링값이 커지면 주사위에서 1이 나올 확률이 이 {1/6:.2%}에 가까이 다가가야 한다.\n")
print(f"총 던진 횟수: {num_sim}, 1이 나온 횟수: {one}")
print(f"주사위에서 1이 나올 확률: {one/num_sim:.2%}")

결과>

 

아직 좀 만족스럽지 못하다. 그러니 극단적으로 6만번 정도 해보자!

 

코드>

import random

def jusawi(num):
    cnt = 0
    doors = ['1','2','3','4','5','6']


    #주사위를 던졌을때, 1이 나오는 경우의 수
    for _ in range(num):
        # 섞기
        random.shuffle(doors)
        if doors[0] == '1':
            cnt += 1

    return cnt

num_sim = 60000
one = jusawi(num_sim)
print(f"6분의 1확률은 {1/6:.2%}이다. \n큰수의 법칙에 의해 샘플링값이 커지면 주사위에서 1이 나올 확률이 이 {1/6:.2%}에 가까이 다가가야 한다.\n")
print(f"총 던진 횟수: {num_sim}, 1이 나온 횟수: {one}")
print(f"주사위에서 1이 나올 확률: {one/num_sim:.2%}")

결과>

 

 

 

댓글