모두의 계산기
← 블로그로 돌아가기

재미있는 확률

무한 원숭이 정리(Infinite Monkey Theorem): 무작위 타자를 무한히 치면 셰익스피어 전집이 나올 확률 계산

원숭이가 무작위로 자판을 무한히 누르면 셰익스피어 전집이 나온다는 말은 사실일까요? 유한 문자열 확률과 거의 확실함의 의미를 계산합니다.

원숭이 한 마리가 타자기 앞에 앉아 아무 키나 무작위로 누른다고 해보겠습니다. 충분히 오래 누르면 의미 있는 단어가 우연히 나올 수 있습니다. 시간을 무한히 늘리면 언젠가는 셰익스피어의 작품 전체도 정확한 순서로 나타날까요?

확률론의 답은 일정한 조건 아래에서 ‘거의 확실히 그렇다’입니다. 유한한 문자로 이루어진 어떤 글도 각 키가 독립적으로 선택되고 필요한 모든 문자의 확률이 0보다 크다면 무한한 무작위 문자열 안에 등장할 확률이 1입니다. 이를 무한 원숭이 정리(Infinite Monkey Theorem)라고 부릅니다.

하지만 이 정리는 현실적인 시간 안에 셰익스피어 전집이 나올 가능성이 크다는 뜻이 아닙니다. 짧은 단어조차 한 번에 맞힐 확률은 글자 수에 따라 지수적으로 작아집니다. ‘무한한 시간의 극한에서 확률 1’이라는 수학적 명제와 ‘실제로 기다리면 볼 수 있다’는 주장은 완전히 다릅니다.

무한 원숭이 정리란 무엇인가요?

무한 원숭이 정리는 다음과 같은 확률 모형을 다룹니다.

  • 사용할 수 있는 문자의 수는 유한합니다.
  • 각 타자는 앞선 타자와 독립입니다.
  • 각 문자는 매번 같은 확률로 선택됩니다.
  • 목표 문장은 유한한 길이입니다.
  • 타자를 누르는 횟수는 끝없이 계속됩니다.

이 조건에서 무한히 생성된 문자열은 미리 정한 모든 유한 문자열을 거의 확실히 포함합니다. 셰익스피어 전집도 아무리 길더라도 완결된 유한 텍스트이므로 수학적 대상에 포함됩니다.

정리에 등장하는 ‘원숭이’는 실제 동물의 행동을 묘사하는 말이 아닙니다. 독립적인 무작위 문자를 끝없이 생성하는 추상적인 장치를 비유합니다. 실제 원숭이가 모든 키를 균등하게 누르거나 각 타자를 독립적으로 선택한다는 가정은 없습니다.

한 단어가 정확히 나올 확률

영어 알파벳 26개만 사용하고 각 글자가 같은 확률로 선택된다고 가정하겠습니다. 길이가 L인 특정 문자열을 한 번에 정확히 입력할 확률은 다음과 같습니다.

한 번에 목표 문자열을 입력할 확률 = (1/26)ᴸ

예를 들어 `HAMLET`은 6글자입니다. 첫 글자가 H일 확률은 1/26이고 이어지는 A, M, L, E, T도 각각 1/26입니다. 독립적인 확률을 모두 곱하면 다음과 같습니다.

P(HAMLET) = (1/26)⁶ = 1/308,915,776

6글자 묶음 한 번이 정확히 `HAMLET`일 확률은 약 3.237×10⁻⁹입니다. 약 3억 891만 번 중 한 번의 비율입니다.

`SHAKESPEARE`는 11글자입니다.

P(SHAKESPEARE) = (1/26)¹¹ = 1/3,670,344,486,987,776

약 3,670조 분의 1입니다. 글자 수가 5개 늘었을 뿐이지만 경우의 수에는 26⁵이 추가로 곱해집니다. 목표가 한 글자 길어질 때마다 확률은 1/26로 줄어듭니다.

공백과 구두점을 포함하면 확률은 더 작아집니다

셰익스피어 작품을 정확히 재현하려면 알파벳만으로는 부족합니다. 공백, 줄바꿈, 쉼표, 마침표, 아포스트로피, 물음표, 대소문자 구분 등이 필요할 수 있습니다. 어떤 판본과 입력 규칙을 선택하는지에 따라 사용할 문자 수와 목표 길이가 달라집니다.

대문자 26개와 공백 하나만 사용하는 27문자 모형에서 `TO BE OR NOT TO BE`는 공백을 포함해 18글자입니다.

P(TO BE OR NOT TO BE) = (1/27)¹⁸

27¹⁸은 58,149,737,003,040,059,690,390,169입니다. 따라서 정렬된 18글자 묶음 한 번이 이 문장과 일치할 확률은 약 1.720×10⁻²⁶입니다.

대소문자와 구두점까지 추가해 키의 수 K가 커지면 길이 L인 텍스트의 한 번 성공 확률은 일반적으로 K⁻ᴸ이 됩니다. 문자 종류가 많아지고 텍스트가 길어질수록 확률은 지수적으로 감소합니다.

셰익스피어 전집은 몇 글자인가요?

‘셰익스피어 전집’에는 하나의 고정된 디지털 문자열이 없습니다. 판본에 따라 포함 작품, 철자, 편집 주석, 무대 지시, 구두점과 줄바꿈이 다릅니다. 먼저 어떤 파일을 정확히 재현할 것인지 정해야 글자 수와 확률을 계산할 수 있습니다.

프로젝트 구텐베르크는 셰익스피어 희곡과 시를 모은 전집을 전자책 100번으로 제공합니다. 해당 전자책은 1994년 공개된 뒤 오탈자 수정과 HTML 추가 등을 거쳐 여러 번 갱신됐습니다. 프로젝트 구텐베르크의 안내도 여러 셰익스피어 판본과 시리즈가 서로 다른 인쇄본과 편집 이력을 가졌다고 설명합니다.

2026년 9월 22일 프로젝트 구텐베르크 전자책 100번의 UTF-8 일반 텍스트 파일을 내려받아 측정한 전체 길이는 5,575,099자였습니다. 이 수에는 작품 본문뿐 아니라 프로젝트 구텐베르크의 표제와 이용 안내문도 포함됩니다. 따라서 이 숫자를 셰익스피어가 쓴 글자 수로 해석하면 안 됩니다. ‘그 파일 전체를 그대로 복제하는 문제’의 목표 길이일 뿐입니다.

가령 길이 5,575,099인 정규화된 텍스트를 50개의 문자가 모두 같은 확률로 나오는 모형에서 한 번에 맞힌다고 가정하겠습니다.

한 번 성공 확률 = 50⁻⁵·⁵⁷⁵·⁰⁹⁹

이 값의 밑이 10인 로그는 약 -9,471,925.972입니다. 성공 확률의 규모는 약 10⁻⁹·⁴⁷¹·⁹²⁶입니다. 지수에 들어가는 숫자만 약 947만입니다. 실제 파일의 문자 종류와 분포를 반영한 결과가 아니라, 목표 길이가 확률에 미치는 영향을 보여 주기 위해 문자 수를 50개로 정한 가상 계산입니다.

여러 번 시도하면 성공 확률은 어떻게 변하나요?

길이 L인 목표를 K개의 문자로 이루어진 독립된 블록에서 찾는다고 하겠습니다. 블록 한 개가 목표와 정확히 일치할 확률은 p=K⁻ᴸ입니다. N개의 서로 겹치지 않는 독립 블록이 모두 실패할 확률은 다음과 같습니다.

N번 모두 실패할 확률 = (1-p)ᴺ

따라서 적어도 한 번 성공할 확률은 다음과 같습니다.

N번 안에 한 번 이상 성공할 확률 = 1-(1-p)ᴺ

`HAMLET`을 알파벳 26개로 입력하는 독립된 6글자 블록을 100만 개 만든다고 해보겠습니다. p는 1/308,915,776이고 N은 1,000,000입니다.

성공 확률 = 1-(1-1/308,915,776)¹·⁰⁰⁰·⁰⁰⁰ ≈ 0.003232

백분율로 약 0.3232%입니다. 600만 글자를 입력해 독립된 6글자 블록 100만 개를 만들더라도 `HAMLET`이 한 번 이상 정확히 나올 확률은 1%보다 낮습니다.

시도 횟수를 계속 늘리면 (1-p)ᴺ은 0에 가까워집니다. p가 아무리 작아도 0보다 크다면 N이 무한대로 갈 때 적어도 한 번 성공할 확률은 1로 가까워집니다.

lim[N→∞] 1-(1-p)ᴺ = 1

이 극한이 무한 원숭이 정리의 핵심입니다.

왜 겹치지 않는 블록으로 증명하나요?

실제 긴 문자열에서는 목표가 첫 번째 글자, 두 번째 글자, 세 번째 글자 등 모든 위치에서 시작할 수 있습니다. 이웃한 후보들은 서로 글자를 공유하므로 독립이 아닐 수 있습니다.

정리를 증명할 때는 목표 길이가 L이라면 생성 문자열을 L글자씩 겹치지 않게 나눌 수 있습니다. 첫 번째 블록은 1~L번째 글자, 두 번째 블록은 L+1~2L번째 글자를 사용하는 방식입니다. 타자가 독립이라면 이 블록들도 독립입니다.

겹치지 않는 블록만 검사해도 시도 횟수는 무한히 많습니다. 이 제한된 후보들 가운데 목표가 나타날 확률이 1이면, 모든 시작 위치를 허용한 원래 문자열에서도 목표가 나타날 확률은 당연히 1입니다.

이 증명은 실제 평균 대기시간을 가장 짧게 계산하려는 방법이 아닙니다. 서로 겹치는 위치까지 사용하면 더 많은 후보를 검사할 수 있지만 특정 패턴이 자기 자신과 겹치는 방식 때문에 대기사건들이 서로 의존할 수 있습니다. 정리의 확률 1 결론에는 독립된 비중첩 블록만으로 충분합니다.

보렐–칸텔리 보조정리와의 관계

두 번째 보렐–칸텔리 보조정리는 서로 독립인 사건 E₁, E₂, E₃, …의 확률 합이 무한대로 발산하면 그 사건 가운데 무한히 많은 사건이 일어날 확률이 1이라고 설명합니다.

각 비중첩 블록이 목표 문자열과 일치하는 사건을 Eₙ이라고 하겠습니다. 모든 블록의 성공 확률은 p=K⁻ᴸ로 같은 양수입니다.

P(E₁)+P(E₂)+P(E₃)+⋯ = p+p+p+⋯ = ∞

사건들이 독립이고 확률 합이 발산하므로 목표 문자열은 한 번뿐 아니라 무한히 여러 번 나타날 확률이 1입니다.

셰익스피어 전집처럼 미리 정한 하나의 유한 텍스트에 적용할 수 있으며, 더 나아가 가능한 모든 유한 문자열에도 적용할 수 있습니다. 유한 알파벳으로 만들 수 있는 유한 문자열의 집합은 셀 수 있으므로, 각 문자열이 등장하는 확률 1의 사건들을 함께 고려해도 모든 유한 문자열이 등장할 확률은 1입니다.

‘확률 1’과 ‘반드시’는 같은 말인가요?

무한 표본공간에서는 확률 1인 사건과 논리적으로 예외가 전혀 없는 사건을 구분해야 합니다. 확률론에서는 확률 1로 일어나는 사건을 ‘거의 확실히(almost surely)’ 일어난다고 표현합니다.

예를 들어 무작위 장치가 `A`만 영원히 출력하는 무한 문자열을 생각할 수 있습니다. 이 문자열에는 `HAMLET`이 나타나지 않습니다. 이런 특정 무한 문자열은 가능한 결과로 기술할 수 있지만 독립적인 균등 무작위 모형에서 그 결과 하나의 확률은 0입니다.

목표 문자열이 영원히 나타나지 않는 무한 문자열들은 존재합니다. 다만 그런 예외들의 전체 확률이 0입니다. 따라서 무한 원숭이 정리의 정확한 표현은 ‘예외 없이 반드시 나타난다’가 아니라 ‘거의 확실히, 즉 확률 1로 나타난다’입니다.

유한한 시도에서는 성공 확률이 정확히 1이 되지 않습니다. 아무리 많은 글자를 입력해도 목표가 나오지 않을 확률은 0보다 큽니다. 확률 1은 시도 횟수를 무한대로 보낸 극한의 결과입니다.

무한 시간과 매우 긴 시간은 다릅니다

무한대는 아주 큰 유한 숫자가 아닙니다. 10억 년이나 10¹⁰⁰년을 기다리는 것과 횟수에 끝이 없는 수학적 극한은 다릅니다.

앞에서 사용한 길이 5,575,099, 문자 50개의 가상 모형을 비중첩 블록으로 계산하면 성공할 때까지 필요한 블록 수의 기댓값은 50⁵·⁵⁷⁵·⁰⁹⁹입니다. 한 장치가 초당 10글자를 입력한다고 가정했을 때의 기대 대기시간은 대략 10⁹·⁴⁷¹·⁹²⁴년 규모입니다.

이 수치는 실제 원숭이나 실제 셰익스피어 전집을 대상으로 한 예측이 아닙니다. 초당 10글자, 균등한 50문자, 독립 입력, 특정 파일 길이라는 가정을 사용한 계산입니다. 핵심은 유한한 현실 시간과 자원에서는 성공 확률이 사실상 0에 가까울 수 있어도, 무한 극한에서는 결론이 확률 1로 바뀐다는 점입니다.

원숭이를 많이 늘리면 얼마나 빨라질까요?

M대의 독립적인 무작위 입력 장치가 각각 하나의 목표 길이 블록을 만든다고 하겠습니다. 장치 하나의 성공 확률이 p라면 모든 장치가 실패할 확률은 (1-p)ᴹ이고 적어도 하나가 성공할 확률은 다음과 같습니다.

1-(1-p)ᴹ

장치 수를 두 배로 늘리면 같은 시간에 시도하는 블록 수도 두 배가 됩니다. 그러나 목표 길이가 한 글자 늘 때 경우의 수는 K배로 증가합니다. 셰익스피어 전집처럼 매우 긴 목표에서는 현실적인 범위에서 장치 수를 늘리는 효과가 지수적인 경우의 수 증가를 따라잡지 못합니다.

수학적으로 장치가 셀 수 없이가 아니라 셀 수 있게 무한히 많고 각 장치가 독립적으로 목표 길이만큼 입력해도, 적어도 한 장치가 목표를 맞힐 확률은 1입니다. 하지만 현실의 장치 수와 시간은 모두 유한하므로 실제 계산에서는 M과 시도 횟수를 유한한 숫자로 넣어야 합니다.

평균 대기 횟수는 어떻게 계산하나요?

성공 확률이 p인 독립된 블록을 성공할 때까지 반복하면 블록 수는 기하분포를 따릅니다. 첫 성공까지 필요한 블록 수의 기댓값은 1/p입니다.

기대 블록 수 = 1/p = Kᴸ

알파벳 26개로 `HAMLET`을 만드는 비중첩 6글자 블록의 기대 블록 수는 26⁶=308,915,776개입니다. 한 블록에 6글자가 필요하므로 기대 입력량은 약 18억 5,349만 글자입니다.

기댓값은 정해진 횟수 안에 반드시 성공한다는 기한이 아닙니다. 308,915,776개의 블록을 시도했을 때 성공 확률은 정확히 100%가 아닙니다. p가 작을 때 1-(1-p)¹⁄ᵖ은 약 1-e⁻¹이므로 약 63.2%에 가까워집니다.

또한 모든 시작 위치를 검사하는 실제 패턴 대기시간은 목표 문자열이 자기 자신과 겹치는 구조에 영향을 받을 수 있습니다. 이 글의 Kᴸ 계산은 독립적인 비중첩 블록을 단위로 한 명시적인 모형입니다.

실제 원숭이는 무작위 생성기가 아닙니다

무한 원숭이 정리에는 실제 원숭이의 지능이나 문학 능력에 관한 주장이 들어 있지 않습니다. 모든 필요한 키를 독립적이고 일정한 양의 확률로 누른다는 가상의 생성 규칙이 핵심입니다.

실제 동물은 특정 위치를 반복해서 누르거나 키보드를 이동시키고, 입력을 중단할 수 있습니다. 어떤 문자의 입력 확률이 0이라면 그 문자가 포함된 목표는 무한히 기다려도 나올 수 없습니다. 타자 사이의 의존성이 너무 강해 특정 패턴이 금지되어도 정리의 결론은 성립하지 않습니다.

2003년 영국 페인턴 동물원에서는 플리머스대학교 예술 프로젝트의 일환으로 술라웨시검정볏원숭이 여섯 마리가 있는 우리에 컴퓨터를 두었습니다. 이 활동은 엄밀한 무한 원숭이 정리 실험이 아니라 예술 프로젝트였고, 유한한 동물·시간·장비만 사용했습니다. 실제 동물 행동이 정리의 독립·균등 무작위 가정을 충족하지 않으므로 결과로 정리의 참과 거짓을 시험할 수 없습니다.

셰익스피어와 똑같은 문장은 창작인가요?

무한 원숭이 정리는 문자열이 생성될 확률만 다룹니다. 생성 장치가 문장의 의미를 이해했는지, 저자라고 부를 수 있는지, 창작 의도가 있었는지는 확률 계산에 포함되지 않습니다.

목표 텍스트를 사전에 정하고 출력이 문자 단위로 일치하는지만 검사하면 수학 문제는 명확해집니다. 대소문자를 무시할지, 철자 변형을 허용할지, 구두점과 줄바꿈을 포함할지는 계산 전에 정해야 합니다. 허용 규칙을 넓히면 성공으로 인정되는 문자열 수가 증가해 확률도 달라집니다.

셰익스피어 전집이라는 표현도 판본마다 차이가 있으므로 특정 디지털 파일이나 정규화 규칙을 목표로 정해야 재현 가능한 확률을 계산할 수 있습니다.

무한 원숭이 정리와 원주율은 같은 문제인가요?

무한 원숭이 정리는 각 문자가 독립적으로 특정 분포에서 추출된다는 확률 모형에 관한 정리입니다. 원주율 π의 숫자들은 무작위 추출로 생성된 확률변수가 아니라 수학적으로 결정된 수열입니다.

어떤 수가 모든 길이의 숫자 블록을 예상 빈도로 포함하면 해당 진법에서 정규수(normal number)라고 합니다. π가 10진법에서 정규수인지는 증명되지 않았습니다. 따라서 무한 원숭이 정리를 근거로 π의 소수 전개에 모든 유한 문자열이 반드시 들어 있다고 결론 내릴 수 없습니다.

현재까지 매우 많은 π의 자릿수를 계산해 여러 패턴을 찾을 수 있다는 경험적 사실과 모든 유한 패턴이 존재한다는 수학적 증명은 다릅니다.

자주 묻는 질문

원숭이 한 마리만 있어도 셰익스피어 전집이 나오나요?

독립적인 무작위 타자를 무한히 계속하고 목표에 필요한 모든 문자의 확률이 양수라면 한 장치만으로도 정해진 유한 텍스트가 거의 확실히 나타납니다. 현실의 원숭이는 이런 무작위 장치가 아닙니다.

확률이 1이면 반드시 나오는 것 아닌가요?

무한 표본공간에서는 확률 1과 논리적 필연이 다릅니다. 목표가 나오지 않는 무한 문자열도 존재하지만 그 예외 집합의 확률이 0이므로 ‘거의 확실히’ 나온다고 표현합니다.

셰익스피어 전집이 한 번만 나오나요?

정리의 독립·양의 확률 조건에서는 정해진 유한 텍스트가 무한히 여러 번 등장할 확률도 1입니다. 비중첩 블록의 성공 사건에 두 번째 보렐–칸텔리 보조정리를 적용할 수 있습니다.

얼마나 기다리면 100% 성공하나요?

어떤 유한한 대기시간에도 성공 확률은 100%가 아닙니다. 시도 횟수가 무한대로 갈 때 성공 확률의 극한이 1입니다. 유한 시간에는 1-(1-p)ᴺ으로 계산합니다.

글자 수가 두 배가 되면 확률도 절반이 되나요?

아닙니다. 문자 수가 K개일 때 길이가 L에서 2L로 늘면 확률은 K⁻ᴸ에서 K⁻²ᴸ로 바뀝니다. 기존 확률에 K⁻ᴸ을 한 번 더 곱하므로 지수적으로 작아집니다.

모든 키의 확률이 같아야 하나요?

반드시 균등할 필요는 없습니다. 목표에 필요한 각 문자가 독립적으로 선택되고 모두 0보다 큰 고정 확률을 가지면 특정 유한 문자열의 확률도 양수입니다. 다만 실제 확률은 각 문자의 확률을 곱해 계산하며 균등 모형의 K⁻ᴸ과 달라집니다.

컴퓨터 난수로 실제 실험할 수 있나요?

짧은 단어를 대상으로 모의실험할 수 있습니다. 그러나 컴퓨터의 의사난수는 유한한 내부 상태와 주기를 가지므로 수학적 의미의 무한 독립 수열과 완전히 같지는 않습니다. 유한 모의실험은 유한 횟수의 확률 계산을 확인하는 데 사용할 수 있습니다.

결론: 무한대에서는 확률 1, 현실에서는 거의 0

길이 L인 특정 문자열을 K개의 문자 가운데 독립적이고 균등한 타자로 한 번에 만들 확률은 K⁻ᴸ입니다. 독립된 블록을 N번 시도해 적어도 한 번 성공할 확률은 1-(1-K⁻ᴸ)ᴺ입니다.

N을 무한대로 보내면 실패 확률은 0으로 수렴하고 성공 확률은 1로 수렴합니다. 보렐–칸텔리 보조정리를 적용하면 목표 문자열이 무한히 여러 번 등장할 확률도 1입니다. 이것이 무한 원숭이 정리의 수학적 내용입니다.

하지만 `HAMLET` 6글자도 알파벳 26개 모형에서 한 블록 성공 확률이 약 3억 891만 분의 1입니다. 셰익스피어 전집처럼 수백만 글자에 이르는 특정 파일은 현실적인 장치 수와 시간으로 재현할 가능성이 사실상 0에 가깝습니다.

정리는 원숭이가 문학을 창작한다는 주장이 아닙니다. 무한한 독립 시행이 양의 확률을 가진 유한 패턴을 어떻게 확률 1의 사건으로 바꾸는지 보여 주는 사고실험입니다. 계산에서는 무한한 극한과 매우 큰 유한 횟수, 확률 1과 논리적 필연을 구분해야 합니다.

참고 자료