공정한 제비뽑기란? 온라인 랜덤 뽑기를 믿을 수 있는 이유
종이 제비뽑기와 온라인 랜덤 뽑기는 무엇이 다를까요? 컴퓨터가 만드는 난수의 종류, 결과와 연출을 나누는 이유, 모두가 결과를 믿게 만드는 진행 요령을 정리했어요.
공정한 뽑기의 세 가지 조건
여럿이 무언가를 뽑을 때 사람들이 “공정하다”고 느끼려면 세 가지가 필요해요. 첫째, 모든 항목이 뽑힐 확률이 같아야 해요. 둘째, 누구도 결과를 미리 알거나 바꿀 수 없어야 해요. 셋째, 그 사실을 참가자들이 눈으로 확인할 수 있어야 해요.
종이 제비뽑기는 첫째 조건은 대체로 지키지만, 접는 모양이나 종이 크기가 달라 손끝으로 구별될 수 있고, 섞는 사람이 마음먹으면 순서를 조절할 수도 있어요. 사다리를 종이에 그릴 때도 가로줄을 긋는 사람이 결과를 짐작할 여지가 있어요. 온라인 뽑기는 이런 물리적인 허점을 없앨 수 있지만, 대신 “프로그램이 조작된 건 아닐까?”라는 새로운 의심을 받게 돼요.
컴퓨터는 난수를 어떻게 만들까
컴퓨터는 원래 같은 입력에 같은 결과를 내는 기계라서, 진짜로 “아무렇게나” 숫자를 고르지는 못해요. 그래서 대부분의 프로그램은 수학 공식으로 무작위처럼 보이는 숫자를 만들어 내는 의사 난수(pseudo-random number)를 써요. 자바스크립트의 Math.random()이 대표적인데, 게임이나 애니메이션에는 충분하지만 시작값을 알면 다음 값을 예측할 수 있는 방식도 있어서 보안이 중요한 곳에는 쓰지 않아요.
보안이 필요한 곳에서는 암호학적 난수 생성기(CSPRNG)를 써요. 운영체제가 하드웨어 잡음, 입력 시각 같은 예측하기 어려운 값을 모아 만든 난수라서, 지금까지 나온 값을 모두 알아도 다음 값을 맞힐 수 없어요. 브라우저에서는 crypto.getRandomValues()로 이 난수를 쓸 수 있고, 비밀번호나 암호 키를 만들 때도 같은 기능을 써요.
플레이moyeo의 모든 뽑기와 팀 나누기는 이 암호학적 난수를 써요. 또 한 가지, 난수를 항목 수로 나눈 나머지를 그대로 쓰면 앞쪽 항목이 아주 조금 더 자주 뽑히는 편향이 생길 수 있어서, 범위를 벗어난 값은 버리고 다시 뽑는 방식으로 모든 항목의 확률을 정확히 같게 맞춰요.
결과와 연출을 나누는 이유
물수제비, 돌림판, UFO처럼 화면 속 연출이 있는 뽑기를 보면 “세게 던지면 결과가 달라지나?” 하는 궁금증이 생겨요. 플레이moyeo에서는 ‘뽑기 시작’을 누르는 순간 결과를 먼저 정하고, 연출은 그 결과를 보여 주는 역할만 해요. 던지는 세기, 돌림판이 멈추는 위치, 돌발 이벤트는 모두 정해진 결과에 맞춰 그려지는 장면이에요.
이렇게 나누면 두 가지가 좋아요. 연출이 아무리 화려해도 확률은 그대로 공정하고, 손이 빠르거나 요령이 좋은 사람이 결과를 유리하게 만들 수 없어요. 연출을 건너뛰어도 결과가 같은 것도 같은 이유예요.
모두가 결과를 믿게 만드는 진행 요령
도구가 공정해도, 진행 방식이 불투명하면 의심이 생겨요. 다음 순서로 진행하면 결과에 대한 불만이 확실히 줄어요.
- 뽑기 전에 규칙을 먼저 합의해요. 몇 명을 뽑는지, 다시 뽑는 경우가 있는지(예: 결석자)를 미리 정해 두세요.
- 참가자 명단을 모두에게 보여 준 뒤 시작해요. 이름이 빠지거나 두 번 들어가지 않았는지 함께 확인하세요.
- 한 화면을 함께 보며 뽑아요. 회의실이라면 화면을 띄우고, 온라인이라면 화면 공유나 라이브 방을 쓰세요.
- 결과가 나오면 바로 이미지로 저장해 공유해요. “다시 한 번만”은 처음에 합의한 경우가 아니면 하지 않는 게 좋아요.
정리
공정한 뽑기는 좋은 난수와 투명한 진행이 함께 있어야 완성돼요. 확률이 같은 난수로 결과를 먼저 정하고, 모두가 보는 앞에서 결과를 공개하면, 누가 뽑히든 “그래, 공평했어” 하고 넘어갈 수 있어요.
자주 묻는 질문
- 같은 사람이 연속으로 뽑히면 조작 아닌가요?
- 아니요. 매번 확률이 같다면 연속으로 뽑히는 일은 생각보다 자주 일어나요. 예를 들어 5명 중 1명을 뽑을 때 같은 사람이 두 번 연속 뽑힐 확률은 1/5, 즉 20%예요. 오히려 연속이 전혀 나오지 않는다면 그쪽이 더 부자연스러워요.
- 결과를 서버에서 정하나요?
- 아니요. 결과는 내 브라우저 안에서 암호학적 난수로 정해져요. 서버나 운영자가 결과에 관여하지 않아요. 라이브 방을 열어도 결과는 방장의 화면에서 정해지고, 다른 사람들은 같은 장면을 함께 볼 뿐이에요.