사다리타기는 정말 공정할까?
사다리타기는 공정한 놀이로 알려져 있지만, 사다리를 어떻게 그리느냐에 따라 특정 자리가 유리해질 수 있습니다. 그 이유와 해결 방법을 확률로 살펴봅니다.
가로줄 하나는 두 사람의 자리를 바꾼다
사다리를 위에서부터 한 칸씩 내려간다고 생각해 봅시다. 어떤 높이에 가로줄이 있으면 그 양쪽 세로줄에 있던 두 사람이 자리를 맞바꿉니다. 가로줄이 없는 줄에 있던 사람은 그대로 내려갑니다. 즉 사다리 전체는 "옆 사람과 자리 바꾸기"를 여러 번 이어 붙인 것과 같습니다.
이 덕분에 사다리타기의 결과는 항상 일대일입니다. 자리 바꾸기를 아무리 반복해도 두 사람이 한자리에 겹치지 않기 때문입니다. 수학에서는 이런 대응을 순열이라고 부르고, 가로줄을 충분히 잘 배치하면 어떤 순열이든 만들 수 있습니다.
그런데 왜 편향이 생길까?
문제는 가로줄 수가 적을 때입니다. 한 번 가로줄을 만날 때마다 옆으로 한 칸만 움직일 수 있으니, 맨 왼쪽에서 출발한 사람이 맨 오른쪽 결과에 닿으려면 적어도 참가자 수보다 하나 적은 만큼 가로줄을 연달아 만나야 합니다. 가로줄이 듬성듬성하면 대부분의 사람은 출발한 자리 근처에서 끝나게 됩니다.
실제로 10명이 높이 10칸짜리 사다리를 무작위로 그려 시뮬레이션해 보면, 1번 자리에서 출발한 사람이 10번 결과에 도착하는 경우가 사실상 없었습니다. 반대로 바로 아래 칸에 도착할 확률은 평균보다 훨씬 높았습니다. 결과를 적는 사람이 이 성질을 알고 당첨을 특정 위치에 두면, 겉보기에는 무작위여도 공정하지 않은 추첨이 됩니다.
가로줄을 많이 그리면 해결될까?
가로줄과 높이를 크게 늘리면 편향은 점점 줄어듭니다. 하지만 완전히 사라지지는 않고, 그만큼 사다리가 복잡해져 종이에 그리기도, 눈으로 따라가기도 어려워집니다. 사람이 손으로 긋는 가로줄은 특정 구역에 몰리는 경향도 있어서 계산대로 섞이지 않는 경우가 많습니다.
다리다리 사다리의 방식: 결과를 먼저 섞는다
다리다리 사다리는 순서를 거꾸로 합니다. 먼저 누가 어떤 결과를 받을지를 완전히 고르게 섞어 정하고, 그다음 그 결과가 정확히 나오도록 사다리를 그립니다.
- 결과 배정: 브라우저의 암호학적 난수 생성기(crypto.getRandomValues)와 피셔–예이츠 셔플로 참가자와 결과의 짝을 정합니다. 가능한 모든 짝이 같은 확률로 나옵니다.
- 사다리 위쪽: 진짜 사다리처럼 보이도록 가로줄을 무작위로 그립니다.
- 사다리 아래쪽: 위쪽을 지난 뒤의 자리를 정해 둔 결과에 맞도록, 옆 사람과 자리를 바꾸는 가로줄을 차례로 추가합니다.
정말 고르게 나오는지 확인했습니다
이 방식으로 2명, 3명, 5명, 10명일 때 각각 4만 번씩 사다리를 만들어 확인했습니다. 10명일 때 모든 참가자가 모든 결과를 받을 확률이 9.5%에서 10.4% 사이로, 기대값인 10%와 거의 같았습니다. 남은 작은 차이는 시행 횟수가 유한해서 생기는 자연스러운 오차입니다.
그러니 어느 줄을 고르든, 결과를 어느 칸에 적든 유불리가 없습니다. 먼저 고르는 사람이 유리하지도 않습니다.
공정한 사다리타기를 위한 팁
- 결과 칸을 채운 뒤 "결과 섞기"를 눌러 순서를 한 번 더 섞으면, 결과를 적은 사람이 위치를 고르는 것까지 막을 수 있습니다.
- 준비 완료를 누른 뒤에는 사다리가 새로 그려지므로, 같은 사다리를 미리 보고 줄을 고를 수 없습니다.
- 여러 사람이 볼 때는 화면을 공유한 상태에서 진행하면 결과에 대한 의심이 없습니다.