본문으로 건너뛰기
← 읽을거리로 돌아가기함께 노는 법 / COFFEE BREAK JOURNAL

이 추첨, 정말 공정할까? 시드 기반 추첨이 작동하는 법

앱으로 하는 내기 추첨은 조작되지 않았다는 것을 어떻게 보여줄 수 있을까요. 시드와 의사난수, 결과를 먼저 정하고 연출을 재생하는 구조를 쉽게 설명합니다.

돌림판이 내 이름에서 멈추면 누구나 한 번은 의심합니다. "이거 짜고 치는 거 아니야?" 종이 제비는 눈으로 확인할 수 있지만 화면 속 추첨은 그럴 수 없습니다. 그래서 디지털 추첨에는 공정함을 설명할 수 있는 구조가 필요합니다.

컴퓨터의 난수는 진짜 무작위가 아니다

컴퓨터가 만드는 난수는 대부분 의사난수입니다. 시드라고 부르는 시작값 하나를 넣으면 정해진 계산을 거쳐 숫자들이 줄줄이 나옵니다. 무작위처럼 보이지만, 같은 시드를 넣으면 언제나 같은 숫자열이 나옵니다.

이 성질은 단점처럼 보이지만 공정성을 증명하는 데에는 오히려 장점입니다. 시드만 알면 누구든 같은 계산을 다시 해서 결과가 맞는지 확인할 수 있기 때문입니다.

결과를 먼저 정하고, 연출은 나중에

커피 대장부의 게임은 시작 버튼을 누르는 순간 시드를 하나 만들고, 그 시드로 결과를 먼저 계산합니다. 돌림판이 몇 도에서 멈출지, 주사위 눈이 몇인지, 플링코 공이 어느 칸에 떨어질지가 그때 이미 정해집니다.

화면에서 보이는 회전과 튕김은 정해진 결과를 향해 재생되는 연출입니다. 그래서 중간에 누가 화면을 어떻게 누르든 결과는 바뀌지 않습니다. 플링코는 도착할 칸을 먼저 정한 뒤 그 칸에 닿는 경로를 거꾸로 계산해서 공을 굴립니다.

여러 명이 각자 휴대폰으로 할 때

여러 사람이 각자 기기에서 같은 게임을 볼 때는 시드를 서버가 만듭니다. 모든 기기가 같은 시드를 받아 같은 계산을 하므로, 서로 다른 화면에서도 같은 결과가 나옵니다. 누군가의 기기만 다른 결과를 보는 일은 구조적으로 생기지 않습니다.

폭탄 돌리기나 눈치게임처럼 누른 시각이 중요한 게임은 각자의 휴대폰 시계가 아니라 서버가 요청을 받은 시각을 기준으로 판정합니다. 기기마다 시계가 조금씩 다르기 때문입니다.

결과 화면의 "공정성 시드"

게임이 끝나면 결과 화면 아래에 짧은 문자열이 표시됩니다. 그 판에 쓰인 시드의 지문(해시)입니다. 같은 시드로는 같은 결과만 나오므로, 이 값은 "이 결과는 이 시드에서 나왔다"는 표식이 됩니다.

그래도 남는 한계

솔직하게 말하면 이 구조가 모든 의심을 없애 주지는 않습니다. 시드를 만드는 쪽을 믿어야 하고, 반응속도처럼 사람의 입력이 결과가 되는 게임은 네트워크 상태의 영향을 받습니다. 다만 "결과가 연출 도중에 바뀌지 않는다"와 "같은 입력이면 같은 결과가 나온다"는 두 가지는 분명하게 보장됩니다. 커피 한 잔을 거는 놀이에는 이 정도면 충분합니다.

YOUR NEXT COFFEE BREAK

오늘부터 커피값 정산, 자동으로

무료로 시작하기