추첨은 어떻게 시뮬레이션되는가
숫자는 뽑는 것이 아닙니다. 계산된 휠에 볼을 던지고, 볼은 다이아몬드에 부딪히고 격벽에서 튀다가 어딘가에 멈춥니다 —— 불리는 것은 바로 그 포켓입니다.
매 판 일어나는 일
대부분의 온라인 룰렛은 0에서 36 사이의 숫자를 먼저 뽑고, 거기에 도달하는 애니메이션을 나중에 만듭니다. 여기서는 반대입니다. 프로그램이 볼을 던지고, 32인치 휠 위에서 미터와 초 단위로 그 운동을 1초에 240번 적분합니다.
| 부분 | 값 |
|---|---|
| 볼 트랙 반지름 | 300 mm |
| 다이아몬드 8개가 놓인 고리 | 245 mm |
| 포켓 바깥 가장자리 | 200 mm |
| 가운데 원뿔 | 115 mm |
| 격벽 높이 | 10 mm |
| 트랙 기울기 | 16 ~ 20° |
| 던질 때 볼 속도 | 4.55 ~ 5.50 m/s |
| 휠 회전 속도 | 초당 0.42 ~ 0.70 바퀴 |
볼은 처음에 제 속도에 받쳐 벽을 따라 돕니다. 느려지다가 결국 트랙에 붙어 있지 못하고 안쪽으로 떨어집니다. 거기서 다이아몬드에 부딪히고, 판에서 튀고, 격벽을 여러 개 넘고, 가운데 원뿔을 타고 올라 다시 달아나기도 합니다. 격벽을 넘을 힘이 남지 않으면 멈춥니다. 불리는 숫자는 볼이 놓인 포켓의 숫자입니다 —— 추첨이 아니라 읽기입니다.
우연은 어디에 있는가
우연은 던지는 데 있지, 결과에 있지 않습니다. 휠의 방향, 속도, 출발 각도, 볼의 위치와 속도, 트랙의 기울기. 이 조건들이 한 번 뽑히고 나면 나머지는 계산이고, 같은 던짐은 언제나 같은 포켓에 떨어집니다.
공정함을 보장하는 것은 그중 단 하나의 값입니다. 휠의 출발 각도는 한 바퀴에 걸쳐 고르게 분포하고, 나머지 전부와 독립입니다. 볼이 매번 트랙의 같은 지점에서 떨어진다 해도, 그 순간 그 아래에 와 있는 포켓은 고르게 분포합니다 —— 따라서 결과도 그렇습니다. 진짜 휠에 대해 성립하는 논증과 똑같습니다. 예측할 수 없어야 하는 것은 볼이 아니라, 볼이 떨어지는 순간 휠이 어디까지 와 있는가입니다.
무엇을 검증하는가
테스트를 돌릴 때마다 20,000판을 실제로 굴리고 측정합니다.
- 37개 숫자에 대한 카이제곱 검정, 자유도 36. 통계량은 특정 포켓이 편애받고 있음을 알리는 문턱에서 충분히 떨어져 있어야 합니다.
- 같은 검정을 떨어지는 지점에도 —— 나머지 전부의 고름을 보장하는 것이 이것입니다.
- 레드와 제로가 나온 빈도를 18/37, 1/37과 표준편차 네 개 안에서 대조합니다.
- 떨어진 뒤의 흩어짐: 절반의 결과를 모으는 데 최소 여섯 포켓이 필요해야 합니다. 그렇지 않으면 볼이 트랙을 떠나는 순간 결과를 짐작할 수 있게 됩니다.
- 그리고 볼이 언제나 포켓 바닥에 멈추고, 보울 밖으로 나가거나 판 밑으로 빠지지 않을 것.
이 검정들 가운데 게임을 참가자에게 유리하게 만드는 것은 하나도 없습니다. 2.70 %의 하우스 엣지는 배당표에서 오는 것이지 추첨에서 오는 것이 아닙니다. 검정이 보장하는 것은 휠이 속이지 않는다는 것 —— 어느 방향으로도 —— 그뿐입니다.
여럿이서, 같은 하나의 볼로
궤적 하나는 대략 160 kB입니다. 매판 모두에게 보내는 것은 터무니없고, 각자 뽑게 하면 같은 테이블에서 다른 숫자가 나옵니다.
그래서 서버가 4바이트짜리 시드를 뽑아 모두에게 보냅니다. 계산이 결정적이므로 각 브라우저는 그것만으로 같은 볼을 밀리미터 단위까지 다시 굴립니다. 숫자를 고르는 사람은 아무도 없습니다. 던진 사람조차도요 —— 시드는 누가 무엇을 보기도 전에 서버를 떠나고, 다시 뽑을 수도 없습니다.
중요한 대목: 서버의 난수원도, 혼자 놀 때 브라우저의 난수원도 플랫폼의 암호용 난수 생성기입니다. 시드는 이미 뽑힌 던짐을 다시 굴리기 위해서만 쓰입니다.
방문자 측정
페이지를 떠나는 것이 하나 있습니다. 방문 카운터입니다. Umami를 쓰고, 제3자가 아니라 이 사이트의 서버에서 돌아갑니다. 쿠키를 심지 않고 개인 데이터를 기록하지 않습니다 —— IP 주소는 익명화되고 브라우저 지문도 수집하지 않습니다 —— 사이트를 넘나들며 누군가를 따라가지도 않습니다. 세는 것은 페이지 조회, 언어, 기기 종류, 그리고 게임의 몇 가지 동작입니다. 고른 언어, 연 글, 만든 공유 테이블, 끝낸 게임. 나온 숫자도, 베팅도, 잔액도 결코 보내지 않습니다. 추적을 원하지 않는다고 알린 브라우저는 추적하지 않습니다.
이 테이블이 하지 않는 것
돈도, 계정도, 비밀번호도 없습니다. 칩은 가짜이고 살 수도 없습니다. 잔액, 통계, 게임 기록은 브라우저 안에 남고 그곳을 벗어나지 않습니다. 공유 테이블에서 오가는 것은 고른 이름, 알린 베팅 —— 다른 사람의 칩이 테이블에 보이는 것은 이것 덕분입니다 —— 그리고 매판의 결과입니다. 잔액은 기기를 떠나지 않고, 모두가 떠나면 테이블도 사라집니다.