본문 바로가기

일기/생각노트

[처음처럼 FLEX] 염따빠끄 다 모으려면 소주 몇병이나 마셔야할까?

 

 

처음처럼에서 스페셜 에디션을 냈다. 가장 큰 특징은 소주 뚜껑에 랜덤으로 '염' '따' '빠' '끄' 중 하나가 써있다는 것. 이것을 활용해서 모든 조합을 모으기 전까지는 술자리를 파할 수 없다는 염따빠끄 챌린지가 유행하고있다.

그럼 궁금해지는게 있다. 과연 평균적으로 몇명이나 마셔야 염따빠끄 조합을 모으고 집에 갈 수 있을까?

정답부터 말하자면 평균적으로는 8.3병 안에 염따빠끄를 모두 모을 수 있다. 바쁜 사람들은 8병이라는 숫자만 외워가고 계산 방법이 궁금한 사람들만 함께 계산을 해보자.

 

1. 우선 analytical approach 로 풀어보겠다. 

이 문제를 풀려면 최소한 먹어야하는 소주의 개수인 4병을 시작으로 5병, 6병, 7병... 이렇게 일일이 확률을 계산해주어야한다. 

아, 처음처럼이 각 글자를 동일한 개수만큼 생산했다는 가정-혹은 믿음-이 필요하다.

 

n=4 부터 가보자. 소주병을 따서 글자를 확인하는 것은 독립 사건이므로 1/4 x 1/4 x 1/4 x 1/4 인데 순서가 상관 없으므로 4! (=4x3x2x1)를 곱한다. 계산 값은 9.4%. 생각보다 높은 확률이다. 술자리 열번이면 염따빠끄를 한번에 모으는 신나는 경험을 한번은 할 수 있다

n=5는 조금 더 난이도가 높다.

4번째까지는 3개의 조합만 주구장창 나오다가 (염따빠 혹은 염따끄 혹은 염빠끄 혹은 따빠끄) 나머지 한개가 딱 나오는 상황이다.

위에서 나열한 3개의 조합은 4 combination 3 (=4C3 =4C1)이다. 독립 사건이므로 1/4를 5번 곱하는건 위의 문제와 같다. 여기서 중요한것은 앞선 3개의 조합의 순서이다. 편의상 앞서 선택한 3개의 조합이 염따빠라고 할때 염염따빠 염따따빠 염따빠빠 가 가능하며 각각을 순서에 상관 없이 나열할 수 있으므로 4!/2!을 계산하면 된다.  

조금 더 일반화된 서술은 A,B,C 가 있다고 했을때 AABC 를 순서에 상관없이 배열하는 문제의 공식은 4!/2! 이며, 2개가 반복되는것은 A,B,C 세개 모두 가능하므로 3을 곱하는 것이다.

최종 식은 4C3 x (1/4)^5 x 4!/2! x 3 = 0.14 = 14%

 

n=6 부터는 이제 논리의 반복이다.

5번째까지는 3개의 조합만 주구장창 나오다가 (염따빠 혹은 염따끄 혹은 염빠끄 혹은 따빠끄) 나머지 한개가 딱 나오는 상황이다.

위에서 나열한 3개의 조합은 4 combination 3 (=4C3 =4C1)이며 독립 사건이므로 1/4를 6번 곱한다. 

아까의 A, B, C 를 다시 빌려오면 

AABBC, AAABC 

이 두조합이 가능하며 각각은 다시 아래와 같은 로직으로 경우의 수를 구할 수 있다. 

AABBC- 5!/2!/2! 이고 한번만 등장하는 C는 글자 3개가 모두 가능하다.

AAABC- 5!/3! 이고 세번이나 등장하는 A는 글자 3개가 모두 가능하다. 

최종 식은 4C3 x (1/4)^6 x (5!/2!/2! x 3 + 5!/3! x 3) = 0.146 = 14.6%

 

힘들지만 이렇게 n=20정도까지 계산을 하다보면 n=20이상의 시점에서는 남은 확률(1- 20병 안에 염따빠끄를 모을 누적 확률)이 무시할만큼 작을 것이고, 그럼 평균을 계산할 수 있게된다.

 

여기까지 온 사람은 나의 계산을 어떻게 믿을 수 있지?꼭 이렇게 노가다를 해야해? 라는 의문을 품었을 수 있다. analytic approach 의 근본적 한계이며 검산과 계산의 편의를 위해 numerical approach 도 소개한다.

 

2. 아래는 numerical solution 계산을 위한 r 코드이다.

10,000번 시뮬레이션을 돌려본 결과로서 근사적인 확률 분포를 구할 수 있다. (feat. 존경하는 연구실 선배님)

unique = c()
for ( i in 1:10000)
{
  tmp = sample.int(4,100,replace = TRUE)
  for ( j in 4:100)
  {
    if(length(unique(tmp[1:j])) == 4)
    {
      unique = c(unique,j)
      break
    }
  }
}
table(unique)
mean(unique)

 r 코드를 통한 시뮬레이션 결과는 다음과 같다. 소주 n병안에 염따빠끄를 모으게될 확률과 누적확률이 표로 정리되어있다. 위에서 해석적 방법으로 구한 결과와 비교해보면 크게 다르지 않음을 알 수 있다. 

 

 

 

10병 안에 염따빠끄를 모두 모으게될 누적 확률은 78.6%로 약 80%정도면 상당히 고무적인 숫자이다. 하지만 모두 확률 싸움이므로 섣부르게 염따빠끄를 모아보자 선언했다가 20%의 확률로는 10병 이상 먹어야하는 경우가 생길 수 있다. 

 

 

+참고로 나는 어제 연구실 사람들과의 술자리에서 6병만에 염따빠끄를 완성했다! 염따빠끄빠끄~ (feat. 가리온)