jacobhan.me

확률 · 컴퓨터과학 · 물리

무작위의 과학: 진짜 우연은 어디에 있는가

사람이 7을 고르는 이유부터, 우연을 흉내 내는 컴퓨터의 사정, 그리고 원자의 떨림에서 길어 올리는 진짜 무작위까지. 숫자 하나에서 출발해 양자역학의 바닥까지 내려가 본다.

잠깐 책에서 눈을 떼고, 머릿속을 비운 다음, 1부터 10까지 가운데 숫자 하나를 떠올려 보자. 정했는가? 높은 확률로 당신은 7을 떠올렸을 것이다. 우연처럼 보이는 이 일치에는 통계가 있다. 사람들에게 1과 10 사이의 숫자를 무작위로 고르게 한 여러 조사를 종합하면, 7을 고르는 비율은 대략 30~40퍼센트에 이른다. 열 개 중 하나씩 고르는 완전한 무작위라면 각 숫자가 10퍼센트씩 나와야 하는데, 7만 서너 배로 튀는 것이다.

왜 하필 7일까. 무작위로 고르라는 말을 들은 순간, 우리 머릿속에서는 조용한 협상이 시작된다. 1이나 10은 양 끝이라 ‘무작위처럼’ 보이지 않으니 제외한다. 5는 한가운데라 너무 뻔하다. 짝수는 어쩐지 규칙적인 느낌이라 꺼려진다. 그렇게 후보를 깎아 나가면 홀수이면서, 끝도 가운데도 아니고, 작아서 성의 없어 보이지도 않는 숫자—7이 남는다. 사람들은 ‘무작위처럼 보이려고’ 머리를 쓰는데, 모두가 똑같은 방식으로 머리를 쓰기 때문에 결과는 도리어 한곳으로 쏠린다.

10% 1 2 3 4 5 6 7 8 9 10 가장 많이 선택
그림 1. 사람에게 1~10 중 하나를 무작위로 고르게 했을 때 나타나는 대략적 경향(여러 조사를 종합한 모식도). 점선은 완전 무작위라면 각 숫자가 가질 10% 기준선이다. 7과 3이 두드러지고, 양 끝의 1과 10은 외면받는다.

이 편향은 한 나라, 한 문화의 버릇이 아니다. 영국에서 진행된 조사에서도 응답자의 약 3분의 1이 7을 골랐고, 색과 숫자를 함께 물으면 다수가 ‘파랑’과 ‘7’을 답한다는 이른바 ‘블루-세븐 현상’도 오래전부터 보고돼 왔다. 범위를 1~100으로 넓히면 사람들이 가장 자주 떠올리는 숫자는 37로 옮겨 가는데, 이 역시 ‘끝도 가운데도 아니고, 적당히 어중간해서 무작위처럼 들리는’ 같은 심리가 작동한 결과다. 흥미롭게도 대규모 언어모델 같은 인공지능에게 같은 질문을 던져도 7을 유난히 자주 내놓는다. 인간의 글을 학습한 기계가 인간의 편향까지 함께 배운 셈이다.

비유로 이해하기

무대 위에서 “자연스럽게 걸어 보세요”라는 주문을 받으면 누구나 어색해진다. 평소엔 무심코 하던 일이, ‘자연스러움을 연기’하려는 순간 부자연스러워진다. 무작위도 똑같다. 우리가 ‘무작위인 척’ 머리를 굴리는 바로 그 순간, 우리는 가장 무작위하지 않은 선택을 한다.

01 — 무작위란 무엇인가무작위는 ‘숫자’가 아니라 ‘수열’의 성질이다

여기서 한 가지 오해를 짚고 넘어가야 한다. “7은 정말 무작위한 숫자가 아닌가?”라는 물음 자체가 잘못됐다. 어떤 숫자도 그 자체로는 무작위하지 않다. 무작위함은 숫자 한 개에 깃든 속성이 아니라, 숫자들이 줄지어 나타나는 방식에 깃든 속성이기 때문이다.

예를 들어 ‘1’이라는 숫자는 무작위한가? 답할 수 없다. 맥락이 없기 때문이다. 누군가 무작위 숫자를 대 보라고 해서 “5”라고 답했는데, 다시 물어도 “5”, 또 물어도 “5”라고 한다면, 그 5는 분명 무작위가 아니다. 반대로 1, 5, 2, 8, 7, 4 …처럼 앞뒤를 예측할 수 없는 흐름 속에 놓인 1이라면, 그 1은 무작위한 수열의 일부로서 무작위하다. 똑같은 ‘1’이지만 한쪽은 무작위이고 한쪽은 아니다. 차이를 만드는 것은 숫자가 아니라 앞의 값에서 다음 값을 얼마나 예측할 수 없는가다.

이 관점은 ‘무작위’를 다루는 모든 기술의 출발점이다. 무작위를 만든다는 것은 곧 ‘다음에 무엇이 올지 누구도 알 수 없는 수열’을 만든다는 뜻이고, 바로 여기서 컴퓨터의 근본적인 곤경이 시작된다.

비유로 이해하기

벽돌 한 장을 두고 ‘이 벽돌은 무질서한가’ 묻는 것은 이상하다. 무질서는 벽돌을 어떻게 쌓느냐의 문제다. 가지런히 쌓으면 담장이고, 아무렇게나 쏟으면 잔해다. 무작위도 마찬가지로, 낱개가 아니라 ‘배열’에서 드러난다.

02 — 컴퓨터의 곤경우연을 만들 수 없는 기계, 의사난수의 탄생

컴퓨터는 결정론적인 기계다. 똑같은 입력을 넣으면 언제나 똑같은 결과를 내놓는다. 이것은 컴퓨터의 미덕이지만, 무작위를 만드는 데는 치명적인 결함이 된다. 컴퓨터 안에는 ‘우연’이라는 부품이 없다. 그래서 컴퓨터가 만들어 내는 무작위 숫자는 사실 진짜 무작위가 아니라, 우리 눈에 무작위처럼 ‘보이고 느껴지도록’ 정교하게 계산된 수열이다. 충분히 가까이 들여다보면 그 안에는 반드시 패턴이 숨어 있다. 그래서 이런 숫자를 의사난수(疑似亂數, pseudo-random number), 이를 만드는 프로그램을 의사난수생성기(PRNG, Pseudo-Random Number Generator)라 부른다.

가장 고전적인 제조법은 선형합동생성기(LCG, Linear Congruential Generator)다. 만드는 방법은 의외로 단순하다. 먼저 출발점이 될 숫자 하나를 정한다. 거기에 커다란 상수 하나를 곱하고, 또 다른 상수를 더한다. 그런 다음 그 결과를 어떤 수로 나눈 나머지를 취한다. 이 나머지가 수열의 다음 숫자가 되고, 그 숫자를 다시 처음 자리에 집어넣어 같은 과정을 반복한다. 식으로 쓰면 이렇다.

Xₙ₊₁ = ( a · X + c ) mod m a, c, m 은 미리 정해 둔 상수 · mod 는 ‘나눈 나머지’를 뜻한다
씨앗 X₀ = 현재 시각 a · X + c → m 으로 나눈 나머지 다음 수 Xₙ₊₁ 수열에 기록 되먹임 — 방금 나온 값이 다음 회차의 입력이 된다
그림 2. 선형합동생성기의 구조. 출력값이 입력으로 되돌아오는 ‘되먹임’ 고리가 핵심이다. 예컨대 이 톱니가 7 → 4 → 1 → 8 → 3 …처럼 숫자를 토해 내지만, 어느 것 하나 우연으로 나온 것은 없다.

여기서 ‘나머지’라는 연산이 모든 일을 한다. 이를 모듈로(modulo) 연산이라 하는데, 시계를 떠올리면 쉽다. 13시는 시계 위에서 1시로 돌아오고, 25시는 다시 1시다. 시곗바늘이 한 바퀴를 돌아 제자리로 오듯, 모듈로 연산은 아무리 큰 수가 들어와도 그것을 정해진 범위 안으로 접어 넣어 순환시킨다. 곱하고 더하는 단계는 숫자를 마구 휘젓는 역할이고, 나머지를 취하는 단계는 그 결과를 일정한 구간 안에 가두는 역할이다.

그런데 여기엔 두 가지 운명이 따라붙는다. 첫째, 출발점이 같으면 결과도 똑같다. 같은 씨앗(seed)을 넣으면 컴퓨터는 한 치의 오차 없이 같은 수열을 다시 만들어 낸다. 그래서 매번 다른 무작위 수열을 원한다면 씨앗 자체를 매번 바꿔 줘야 한다. 가장 흔한 수법이 ‘현재 시각’을 씨앗으로 삼는 것이다. 많은 컴퓨터는 1970년 1월 1일 0시—컴퓨터가 시간을 세기 시작한 기준점—부터 흐른 시간을 씨앗으로 쓴다. 프로그램을 켜는 순간의 시각은 매번 다르므로, 수열도 매번 새로 출발한다.

둘째, 모듈로는 순환이기에 수열은 언젠가 반드시 처음으로 되돌아온다. 같은 패턴이 다시 시작되기까지의 길이를 주기(period)라 하는데, 상수 a, c, m을 잘못 고르면 주기가 짧아 머지않아 똑같은 행렬이 반복된다. 무작위처럼 보이던 수열의 가면이 벗겨지는 순간이다.

역사에는 이 함정에 빠진 사례가 또렷이 남아 있다. 선형합동생성기는 1949년 수학자 데릭 헨리 레머가 제안한 이래 컴퓨팅 초창기를 풍미했다. 그러나 1960년대에 널리 복제돼 쓰인 ‘RANDU’라는 생성기는 악명 높은 실패작으로 기록됐다. 겉보기엔 멀쩡한 숫자를 쏟아 냈지만, 연속한 세 값을 묶어 3차원 공간의 좌표로 찍어 보면 점들이 공간 전체에 골고루 흩어지지 않고 단 15개의 평면 위에만 줄지어 앉았다. 무작위를 가장한 숨은 격자가 그 안에 도사리고 있었던 것이다. 오늘날에는 훨씬 정교한 생성기들이 그 자리를 대신한다. 1998년 발표된 ‘메르센 트위스터’는 같은 패턴이 반복되기까지의 주기가 2의 19937제곱에서 1을 뺀 값에 이른다. 관측 가능한 우주의 원자 수를 아득히 뛰어넘는 길이라, 현실에서는 반복을 만날 일이 사실상 없다. 보안이 걸린 영역에서는 한 걸음 더 나아가, 출력의 일부를 엿보더라도 다음 값을 거꾸로 계산해 낼 수 없도록 설계한 암호학적 의사난수생성기(CSPRNG, Cryptographically Secure Pseudo-Random Number Generator)를 쓴다.

비유로 이해하기

의사난수생성기는 톱니가 아주 많은 거대한 룰렛과 같다. 던질 때마다 어디서 멈출지 알 수 없어 보이지만, 사실 룰렛은 시작 위치만 정해지면 정확히 같은 자리에 멈추도록 만들어진 기계다. 우리가 매번 ‘현재 시각’이라는 새로운 손가락 힘으로 룰렛을 돌리기 때문에 결과가 달라 보일 뿐, 룰렛 자체에는 한 톨의 우연도 들어 있지 않다.

03 — 흔한 오해‘균등함’은 ‘무작위함’이 아니다

여기서 또 하나의 뿌리 깊은 오해를 풀어야 한다. 많은 사람이 무작위를 ‘모든 값이 똑같은 확률로 나오는 것’이라고 여긴다. 주사위 하나를 굴리면 1부터 6까지 각 면이 정확히 6분의 1씩 나오니, 이것은 모든 값이 평평하게 같은 확률을 갖는 균등분포다. 여기까지는 직관과 잘 맞는다.

그러나 주사위 두 개를 굴려 눈의 합을 보면 이야기가 단숨에 달라진다. 합이 2가 되려면 (1,1) 한 가지뿐이지만, 합이 7이 되는 경우는 (1,6)·(2,5)·(3,4)·(4,3)·(5,2)·(6,1)로 무려 여섯 가지다. 그래서 두 주사위의 합은 7 부근에서 가장 자주 나오고, 양 끝으로 갈수록 드물어지는 삼각형 모양을 그린다. 주사위를 셋, 넷, 자꾸 늘려 가면 그 봉우리는 점점 둥글어지다가 마침내 가운데가 불룩 솟은 ‘종 모양 곡선’에 가까워진다. 이것이 정규분포(normal distribution), 혹은 발견자의 이름을 따 가우스 분포(Gaussian distribution)라 불리는 곡선이다.

주사위 1개 균등 2개 삼각 3개 둥글어짐 여러 개 종 모양 곡선
그림 3. 더하는 주사위의 수가 늘수록 합의 분포는 평평한 균등 모양에서 점점 가운데가 솟은 종 모양으로 옮겨 간다. 비슷하게 행동하는 요소가 많이 더해질 때 거의 언제나 이 곡선이 나타난다.

이 곡선을 ‘정규(normal)’라 부르는 까닭은, 자연에서 거의 모든 것이 이 모양을 따르기 때문이다. 비슷하게 행동하는 수많은 요소가 한데 더해질 때 그 합은 종 모양으로 수렴한다—이를 중심극한정리(CLT, Central Limit Theorem)라 한다. 사람의 키, 측정 오차, 시험 점수의 분포가 한결같이 종 모양인 것도 같은 이치다. 그래서 정규분포는 세상 곳곳에 숨어 있다.

그렇다면 종 모양 분포는 무작위가 아닌 것일까? 그렇지 않다. 정규분포를 따르는 값도 완벽하게 무작위다. 핵심은 이것이다. 무작위의 본질은 ‘모든 값이 똑같은 확률인가’가 아니라 ‘다음에 어떤 값이 나올지 미리 알 수 없는가’에 있다. 가운데 값이 나올 확률이 아무리 높더라도, 양 끝의 값이 나올 가능성이 완전히 0이 아니라면, 그래서 다음 결과를 단언할 수 없다면 그것은 무작위다. 균등분포는 무작위의 한 가지 형태일 뿐, 무작위의 정의가 아니다. 우리가 흔히 ‘무작위 숫자’라 부르는 것은 정확히는 ‘모든 값이 같은 확률로 나오는 균등한 난수’를 가리키는 좁은 표현에 가깝다.

비유로 이해하기

키 큰 사람보다 평균 키의 사람이 훨씬 많다. 그렇다고 길에서 마주칠 다음 사람의 키를 정확히 맞힐 수 있는가? 없다. 어떤 값이 더 흔하다는 것과, 다음 값을 예측할 수 있다는 것은 전혀 다른 이야기다. 종 모양 분포는 ‘흔한 정도’를 알려 줄 뿐, 무작위함을 빼앗지는 않는다.

04 — 진짜 우연예측 불가능은 원자의 떨림에서 온다

잘 만든 의사난수생성기는 우리를 충분히 속일 수 있다. 그러나 그것은 여전히 규칙을 따르는 기계이고, 원리적으로는 예측할 수 있다. 그렇다면 정말로 환원 불가능한 우연, 그 누구도 미리 알 수 없는 진짜 무작위는 어디에 있을까? 그것은 물리학의 가장 깊은 바닥, 양자역학의 세계에 있다.

대표적인 원천이 방사성 붕괴(radioactive decay)다. 불안정한 원자핵은 어느 순간 스스로 입자나 에너지를 내뿜으며 더 안정한 상태로 바뀐다. 그런데 ‘특정한 원자 하나가 정확히 언제 붕괴할지’는 원리적으로 예측할 수 없다. 더 빨리 붕괴하도록 재촉할 수도, 미루도록 달랠 수도 없다. 양자역학에 따르면 그 시점은 어떤 숨은 시계에 미리 적혀 있는 것이 아니라, 오직 확률로만 말할 수 있는 사건이다. 이것이 자연이 인간에게 거저 내어 주는 진짜 우연이다.

구체적인 한 장면을 보자. 어떤 핵 안에서는 중성자 하나가 양성자로 바뀌면서 고에너지 전자 한 개를 바깥으로 내쏜다. 이를 베타 붕괴라 한다. 이렇게 튀어나온 전자를 가이거 계수기(Geiger counter)라는 장치로 받아 ‘딸깍’ 소리로 하나씩 세면, 딸깍이 들리는 그 시점이 곧 무작위 사건의 타임스탬프가 된다. 딸깍과 딸깍 사이의 간격은 규칙도 리듬도 없이 제멋대로 벌어졌다 좁혀진다.

가이거 계수기의 ‘딸깍’ — 언제 올지 누구도 모른다 t₁ t₂ 두 간격을 견주어 0과 1을 뽑는다
그림 4. 방사성 붕괴가 검출되는 시점은 불규칙하다. 연속한 두 시간 간격 t₁·t₂를 견주어 ‘t₁이 짧으면 1, 아니면 0’ 식으로 비트를 뽑으면, 검출기 자체의 미세한 치우침까지 상쇄한 순수한 무작위 비트를 얻는다.

여기서 자주 오가는 통계 이야기를 정확히 짚어 두자. 정해진 시간 동안 들어오는 붕괴의 ‘개수’는 푸아송 분포(Poisson distribution)를 따른다. 계수율이 높아 평균 개수가 충분히 커지면 이 푸아송 분포는 앞서 본 종 모양 곡선(정규분포)에 매우 가까워진다—그래서 흔히 붕괴 계수가 ‘종 모양’이라고 뭉뚱그려 말하기도 하지만, 엄밀히는 푸아송이 먼저고 정규는 그 근사다. 한편 ‘딸깍과 딸깍 사이의 시간’은 지수분포(exponential distribution)를 따른다. 다음 붕괴를 기다리는 동안 ‘앞으로 얼마나 더 기다려야 하는가’가 지금까지 기다린 시간과 아무 상관이 없다는 뜻인데, 이 무기억(memoryless) 성질이야말로 무작위의 가장 순수한 얼굴이다.

비유로 이해하기

전자레인지 속 팝콘을 떠올려 보자. 어느 알갱이가 정확히 언제 터질지는 누구도 맞힐 수 없다. 하지만 1분 동안 대략 몇 알이 터질지는 꽤 안정적으로 예측할 수 있다. 개별 사건은 완전한 우연인데, 전체 개수는 차분한 통계를 따른다. 방사성 붕괴가 바로 이렇다—그래서 ‘예측 불가능한 우연’과 ‘안정된 분포’가 한 몸에 깃든다.

05 — 우연의 수확세상은 무작위를 어떻게 길어 올리는가

그렇다면 이 자연의 우연을 어떻게 숫자로 바꿔 쓸까. 방법은 한결같다. 예측 불가능한 물리현상을 골라, 그것을 디지털 신호로 옮겨 적는 것이다. 이렇게 진짜 물리에서 무작위를 뽑아내는 장치를 진성난수생성기(TRNG, True Random Number Generator)라 부른다.

가장 직관적인 방식은 방사성 붕괴를 그대로 쓰는 것이다. 1996년부터 운영돼 온 한 인터넷 서비스는 가이거-뮐러 관으로 붕괴를 감지해, 연속한 두 번의 붕괴 사이 시간 간격을 견주는 방식으로 0과 1을 뽑아낸다. 앞서 본 ‘두 간격을 비교하는’ 영리한 수법 덕분에 검출기 자체의 미세한 치우침까지 상쇄된다. 다만 자연의 붕괴는 느긋해서, 이런 장치가 만들어 내는 무작위 비트는 초당 백 바이트 안팎으로 더디다. 진짜 우연은 값지지만 빠르게 퍼 올리기는 어렵다는 뜻이다.

다른 길도 많다. 어떤 서비스는 라디오 수신기로 받아 낸 대기 중의 전파 잡음을 무작위의 원천으로 삼고, 또 어떤 장치는 반도체에서 튀어나오는 광자의 무작위성을 이용하는 양자난수생성기(QRNG, Quantum Random Number Generator)를 쓴다. 그중에서도 가장 널리 회자되는 사례는 단연 ‘용암등 벽’이다.

인터넷 트래픽의 상당 부분을 떠받치는 한 보안 기업은 본사 로비에 약 100개의 용암등(라바 램프)을 벽처럼 세워 두고 카메라로 끊임없이 촬영한다. 바닥의 열로 데워지면 솟아오르고 위에서 식으면 가라앉는 왁스 덩어리의 흐름은, 복잡한 유체역학을 따르기에 두 번 다시 같은 모양이 되지 않는다. 디지털 사진은 결국 픽셀마다 숫자가 박힌 데이터의 묶음이므로, 매 순간 달라지는 이 사진은 그 자체로 예측 불가능한 ‘엔트로피(entropy, 무질서·불확실성)의 원천’이 된다. 회사는 이 벽을 ‘엔트로피의 벽’이라 부른다. 로비를 지나던 사람이 카메라 앞을 잠깐 가리는 것조차 무작위성에 보탬이 된다. 같은 회사의 다른 사무실에서는 흔들리는 진자의 카메라 영상을, 또 다른 곳에서는 방사성 시료의 붕괴를 같은 목적으로 쓴다고 한다. 사실 이 발상 자체는 1990년대에 한 컴퓨터 기업이 여섯 개의 용암등으로 처음 특허를 냈던 아이디어를, 특허가 풀린 뒤 대규모로 확장한 것이다.

이 모든 수고는 결국 암호 때문이다. 인터넷에서 오가는 메시지와 금융 거래를 지키는 암호 열쇠는 ‘추측 불가능’해야만 안전하다. 만약 예측 가능한 의사난수로 열쇠를 만들면, 공격자가 그 안에 숨은 패턴을 읽어 내 열쇠를 복원할 수 있다. 그래서 물리에서 길어 온 진짜 우연을 씨앗으로 섞어, 열쇠의 출발점 자체를 누구도 짐작할 수 없게 만든다. 책상 위 의사난수생성기의 빠른 속도와, 물리에서 온 엔트로피의 예측 불가능함을 함께 엮는 것이다. 로비 한구석의 용암등이, 사실은 당신의 통신을 지키는 보안 장치의 일부인 셈이다.

비유로 이해하기

금고 비밀번호를 사람이 직접 정하면 ‘1234’나 생일처럼 뻔한 숫자가 되기 쉽다. 그러나 우주가—원자의 떨림이든 용암등의 일렁임이든—골라 준 숫자라면, 그것을 정한 본인조차 미리 알 수 없다. 가장 안전한 비밀번호는 ‘아무도, 심지어 만든 사람도 예측할 수 없는’ 비밀번호이고, 그래서 사람들은 우연을 만들어 줄 곳을 자연에서 찾는다.

06 — 닫는 글무작위는 ‘모름’의 다른 이름이다

여정을 정리하면 이렇다. 숫자 한 개에는 무작위함이 없다—그것은 수열의 성질이다. 인간은 무작위를 흉내 내려다 도리어 7로 쏠리고, 컴퓨터는 규칙을 따르는 기계이기에 진짜 우연 대신 정교한 가짜를 만든다. 그리고 그 누구도 미리 알 수 없는 진짜 무작위는, 원자가 언제 붕괴할지 모르는 양자의 바닥에서 비로소 솟아오른다.

어쩌면 무작위란 ‘세상에 대한 우리의 무지’를 가리키는 또 다른 이름인지도 모른다. 다음에 무엇이 올지 알 수 없을 때, 우리는 그것을 우연이라 부른다. 인간은 패턴을 너무 사랑하고, 컴퓨터는 너무 규칙적이며, 진정으로 예측을 거부하는 것은 오직 자연의 가장 깊은 곳뿐이다. 무작위를 만든다는 것은 결국, 그 깊은 곳의 떨림을 조금 빌려 오는 일이다.

그러니 다음에 누군가 “아무 숫자나 하나 대 봐”라고 하거든, 답하기 전에 잠시 멈춰 보자. 그 숫자는 당신 머릿속 어딘가에 이미 정해져 있던 것일까, 아니면 정말로 우연일까. ─ 십중팔구는, 7이겠지만.