핀볼 룰렛
핀볼 룰렛Pinball Roulette
🌀
기술

물리 엔진은 어떻게 무작위를 만드나? 결정론적 카오스의 원리

수학적으로 모든 것이 정해져 있는 물리 엔진이, 어떻게 매번 다른 추첨 결과를 만들어낼 수 있을까? ‘나비 효과’로 잘 알려진 결정론적 카오스의 정체를 풀어봅니다.

📅 2025-02-087분 읽기

‘1번 입력하면 1번 출력한다’가 컴퓨터의 기본 원리입니다. 그런데 같은 핀볼 룰렛에서 같은 위치에 공을 떨어뜨려도 매번 다른 결과가 나오는 것처럼 보입니다. 이게 어떻게 가능한 걸까? 답은 1960년대에 발견된 ‘결정론적 카오스’ 이론에 있습니다.

1961년 — 컴퓨터 한 대가 발견한 새로운 수학

1961년, MIT 기상학자 에드워드 로렌즈(Edward Lorenz)는 날씨 시뮬레이션 프로그램을 돌리던 중 이상한 현상을 발견합니다. 같은 시뮬레이션을 두 번 돌렸는데, 결과가 완전히 다르게 나왔습니다. 처음에는 컴퓨터가 고장난 줄 알았던 그는, 곧 두 번째 실행에서 입력한 초기값이 첫 번째와 미세하게 달랐다는 것을 알아챕니다.

차이는 0.506127 vs 0.506 — 단지 소수점 셋째 자리 이후의 반올림이었습니다. 그런데 이 작은 차이가 시뮬레이션을 진행할수록 점점 커져, 결국에는 완전히 다른 날씨 패턴을 만들어냈습니다. 로렌즈는 이 현상을 두고 “브라질에서 나비 한 마리가 날갯짓을 하면 텍사스에서 토네이도가 일어날 수 있다”고 표현했고, 이것이 ‘나비 효과(butterfly effect)’의 시작입니다.

결정론적 카오스란 무엇인가?

결정론적 카오스(Deterministic Chaos)는 수학적으로 두 가지 모순되는 듯한 성질을 동시에 가지는 시스템입니다.

  1. 결정론적(Deterministic): 시스템의 모든 규칙이 정해져 있고, 같은 초기 조건이면 항상 같은 결과가 나옵니다.
  2. 카오스적(Chaotic): 초기 조건의 매우 작은 차이가 시간이 지날수록 기하급수적으로 커져, 사실상 결과를 예측하는 것이 불가능합니다.

이 두 성질이 동시에 성립하는 시스템이 자연계와 시뮬레이션 곳곳에 숨어 있습니다. 날씨, 이중진자, 인구 동역학, 그리고 우리가 보는 핀볼이 모두 결정론적 카오스 시스템입니다.

matter.js — 핀볼 룰렛의 심장

핀볼 룰렛은 matter.js라는 2D 물리 엔진을 사용합니다. 이 엔진은 매 프레임(보통 1초에 60번)마다 다음 일을 합니다.

  • 각 공의 현재 위치·속도·회전을 계산
  • 공과 핀, 공과 공 사이의 충돌을 감지
  • 충돌이 일어났다면 충돌 각도와 반발 계수에 따라 새로운 속도를 계산
  • 중력·마찰·공기 저항을 적용해 다음 위치를 갱신

이 과정은 100% 결정론적입니다. 즉, 모든 공의 위치를 똑같이 시작한다면 결과도 똑같이 나옵니다. 하지만 우리는 매번 다른 결과를 봅니다. 왜일까?

공이 매번 다르게 떨어지는 진짜 이유

핀볼 룰렛에서는 공의 시작 위치를 매번 약간씩 다르게 무작위화합니다. 또한 두 개 이상의 공이 거의 동시에 떨어지면, 공끼리의 충돌이 새로운 무작위성을 만들어냅니다. 이 작은 시작 위치 차이가 첫 번째 핀과의 충돌 각도를 미세하게 바꾸고, 그 충돌이 두 번째 핀과의 만남을 더 크게 바꾸고, 핀 10개를 지나갈 때쯤에는 두 공의 경로가 완전히 달라집니다.

이것이 정확히 1961년 로렌즈가 본 현상입니다. 작은 초기 조건 차이가 기하급수적으로 증폭되어 사실상 무작위처럼 보이는 결과를 만들어내는, 결정론적 카오스의 모범 사례입니다.

왜 이 방식이 ‘공정한 추첨’으로 인정받을까?

단순한 의사난수 생성기(PRNG)도 무작위 결과를 만들 수 있습니다. 그런데 왜 굳이 물리 시뮬레이션을 거치는 핀볼 룰렛이 더 ‘공정해 보일까요?’ 답은 인간의 인식 방식에 있습니다.

사람은 ‘0.873을 출력했습니다’라는 결과보다, ‘공이 핀에 부딪히고 좌측으로 굴러갔다가 다음 핀에서 우측으로 튕겼다’는 시각적 과정을 본 결과를 훨씬 더 신뢰합니다. 인과 관계가 보이는 결과는 조작이 불가능하다는 직관을 만들어냅니다. 핀볼 룰렛은 결정론적 카오스를 시각화함으로써 이 직관을 활용하는 도구입니다.


수학적으로 보면 핀볼 룰렛의 결과는 시작 시점에 모두 정해져 있습니다. 다만 그 ‘정해진 결과’를 알아내는 것이 불가능할 만큼 시스템이 민감하기에, 우리에게는 무작위로 보일 뿐입니다. 1961년 로렌즈가 우연히 발견한 작은 수학적 진실이, 지금 여러분이 보는 화면 위 공의 궤적 속에 그대로 살아 있습니다.

이 글이 도움이 됐나요?

지금 바로 핀볼 룰렛이나 럭키 드로우로 추첨을 시작해 보세요. 모두 무료입니다.

물리 엔진카오스 이론matter.js시뮬레이션