사다리타기는 가로줄을 아무렇게나 그어도 출발한 자리 가까이에 닿기 쉬워요. 12칸 사다리를 20만 번 만들어 직접 잰 결과와, 누구에게나 같은 확률을 주려고 이 사이트가 쓴 방법을 적어 둬요.
사다리타기는 운에 맡기는 놀이처럼 보이지만, 가로줄을 아무렇게나 그어도 결과가 고르게 나오지는 않아요. 이 사이트의 사다리를 만들면서 직접 재 보고 알게 된 것과, 그래서 바꾼 방법을 적어 둬요.
사다리는 자리를 맞바꾸기만 해요
가로줄 하나는 이웃한 두 세로줄을 잇고, 그 줄을 만난 사람은 옆 세로줄로 한 칸 옮겨 가요. 이 사이트는 한 줄에서 가로줄이 서로 붙어 놓이지 않게 해서, 어느 자리에서든 갈림길이 하나뿐이에요.
그래서 가로줄은 두 사람의 자리를 맞바꾸는 일만 하고, 출발한 칸과 도착하는 칸이 언제나 하나씩 짝지어져요. 두 사람이 같은 결과에 닿거나 아무도 닿지 않는 결과가 생기지 않아요. 칸 수마다 여러 번 만들어 보는 시험으로 이 점을 확인해 두었어요.
칸은 둘부터 열둘까지 고를 수 있고, 가로줄을 놓을 줄의 수는 칸 수의 세 배예요. 다만 열 줄보다 적어지지 않게 해서 열두 칸이면 서른여섯 줄이에요.
가로줄만 무작위면 고르지 않아요
가로줄 하나는 사람을 한 칸만 옮겨 줘요. 맨 왼쪽에서 출발한 사람이 맨 오른쪽 칸까지 가려면 오른쪽으로 옮겨 주는 가로줄을 적어도 열한 번 만나야 하는데, 그런 일은 드물어요. 그래서 출발한 자리 가까이에 닿기 쉬워요.
실제로 재 봤어요. 열두 칸 사다리를 무작위 가로줄로 20만 번 만들고 맨 왼쪽에서 출발한 사람이 어디에 닿는지 셌더니, 바로 아래 칸에 닿은 것이 16.1%, 맨 오른쪽 칸에 닿은 것이 1.7%였어요. 고르다면 모든 칸이 8.3%씩이어야 하니, 가까운 칸과 먼 칸이 열 배 가까이 벌어진 거예요.
칸이 적으면 덜 벌어지지만 그래도 고르지 않아요. 네 칸 사다리에서는 바로 아래 칸이 27.9%, 맨 끝 칸이 21.7%였어요. 사람이 종이에 긋는 사다리도 가로줄이 한 칸씩만 옮겨 준다는 점은 같아서 비슷하게 쏠릴 수 있다고 봐요. 다만 손으로 그은 사다리는 재 보지 않았어요.
결과를 먼저 섞어 놓아요
그래서 이 사이트는 가로줄을 더 많이 긋는 대신, 아래쪽 결과 칸에 결과를 놓는 순서를 먼저 무작위로 섞어요. 모든 순서가 같은 확률로 나오는 섞기 방법을 써요. 사다리는 그다음에 따로 만들어요.
이렇게 하면 내가 어느 칸에 닿든 그 칸에 놓인 결과가 무엇인지는 사다리와 따로 고르게 정해져요. 그래서 누가 어떤 결과를 받을 확률이 사다리 모양과 상관없이 칸 수 분의 1로 모두 같아요. 화면의 사다리 그림은 그대로 따라가 볼 수 있는 진짜 길이에요.
이것도 시험으로 확인해요. 열두 칸 사다리로 1만 2천 번을 뽑아 맨 왼쪽 사람이 받은 결과를 세면, 결과 열두 개가 모두 기대값인 1천 번 안팎으로 나와야 통과해요. 같은 시험에서 섞지 않았을 때의 쏠림이 실제로 나타나는지도 함께 봐요.
난수는 어디에서 오나요
무작위 값은 브라우저가 주는 암호용 난수에서 받아요. 흔히 쓰는 간단한 난수 함수는 쓰지 않아요. 이 난수는 타로 카드 뽑기, 룰렛, 팀 나누기, 순서 정하기에서도 똑같이 써요.
난수를 칸 수에 맞출 때도 작은 쏠림이 생길 수 있어요. 받은 값을 열둘로 나눈 나머지를 그냥 쓰면, 받을 수 있는 값의 개수가 열둘로 나누어떨어지지 않아서 앞의 네 칸이 3억 5,800만 번에 한 번꼴로 더 나와요. 이 사이트는 나누어떨어지지 않고 남는 끝부분의 값이 나오면 버리고 다시 받아서 그 차이까지 없앴어요.
룰렛과 넣은 이름
룰렛은 바늘이 멈출 칸을 같은 확률로 먼저 정하고, 그 칸에 멈추도록 도는 각도를 계산해요. 화면에서 도는 모습은 이미 정해진 결과를 보여 줄 뿐이라, 언제 누르든 결과에는 영향이 없어요.
넣은 이름과 결과는 이 기기 안에서만 쓰고 어디로도 보내거나 저장하지 않아요. 주소에도 담지 않아서 화면을 닫으면 남지 않아요.
이 서비스는 자바스크립트가 필요해요. 브라우저에서 자바스크립트를 켠 뒤 다시 열어 주세요.