무작위 당첨자 선정 도구 (경품 추첨기)

참가자 명단을 붙여넣고 당첨자 수와 예비 인원을 정하면, 암호학적 난수로 공정하게 추첨합니다.

조회수 1,195회

작동 방식

한 줄에 하나씩 참가자를 붙여넣으세요 — 이름, 사용자 이름, 이메일 등. 필요한 당첨자 수와 예비 인원 수를 정하면, 이 도구는 암호학적으로 안전한 난수를 사용해 추첨합니다: 일반적인 Math.random()이 아니라 암호화 키를 생성할 때 사용되는 것과 동일한 원천인 브라우저의 crypto.getRandomValues() API입니다. 이 차이가 중요한 이유는, 일반적인 의사난수 생성기를 기반으로 만든 순진한 셔플 알고리즘이 모듈로 편향(modulo bias)이라는 미묘한 통계적 왜곡을 겪을 수 있기 때문입니다 — 목록 안의 특정 위치가 다른 위치보다 아주 조금 더 높은 확률로 뽑히게 되는 현상으로, 부실하게 만들어진 주사위 굴리기나 숫자 선택 도구에서도 나타나는 것과 같은 결함입니다. 이 도구는 암호학적 난수로 시드된 편향 없는 피셔-예이츠(Fisher-Yates) 셔플을 사용하므로, 목록의 길이나 이름이 붙여넣은 텍스트 안에서 어디에 위치하는지와 무관하게 모든 항목이 수학적으로 동일한 확률을 가집니다.

실제로 판단이 필요한 유일한 지점은 중복된 이름을 어떻게 처리할 것인가입니다 — 예를 들어 인스타그램 댓글로 진행하는 경품 이벤트에서 같은 팔로워가 다섯 번 댓글을 남긴 경우입니다. 이 도구는 선택권을 제공합니다: 중복을 그대로 두면 각 댓글이 별도의 응모권으로 취급되어(그 팔로워는 당첨 확률이 5배가 됩니다), 또는 "중복 제거"를 활성화하면 몇 번 댓글을 남겼든 상관없이 고유한 사람마다 정확히 하나의 응모권만 부여됩니다. 어느 방식도 객관적으로 "더 공정하다"고 할 수 없습니다 — 이는 추첨을 실행하기 전에 결정하고 공개해야 할 규칙이지, 추첨 후에 정할 것이 아닙니다.

사용 전에 알아야 할 사항

  • 셔플은 암호학적으로 무작위이며 수학적으로 편향이 없습니다 — 도구를 실행하는 사람을 포함해 누구도 특정 결과에 영향을 주거나, 예측하거나, 재현할 방법이 없습니다.
  • 당첨자와 예비자는 단 한 번의 셔플에서 나온 서로 다른 위치를 차지합니다. 어떤 이름이 목록에 단 한 번만 등장한다면 당첨자와 예비자 양쪽으로 동시에 선택될 수 없습니다.
  • 중복 처리 규칙(한 사람당 한 응모권 대 댓글 하나당 한 응모권)은 추첨 전에 정하고 공개적으로 밝히십시오 — 인스타그램을 비롯한 여러 플랫폼의 경품 이벤트 가이드라인은 투명하고 사전에 공지된 규칙을 요구하는 경우가 많습니다.
  • 모든 처리는 브라우저에서 로컬로 실행됩니다. 참가자 명단은 업로드되거나 저장되지 않으며, 결과에는 공정하고 검증 가능한 추첨의 증거로 스크린샷을 남길 수 있는 타임스탬프가 포함됩니다.

자주 묻는 질문

추첨이 정말로 무작위인가요, 아니면 조작될 수 있나요?

이 도구는 브라우저의 암호학적으로 안전한 난수 생성기(crypto.getRandomValues)와 편향 없는 피셔-예이츠 셔플을 결합해서 사용합니다 — 대부분의 일상적인 스크립트에 내장된 단순한 Math.random()이 아니라, 암호화 키를 생성할 때 쓰이는 것과 같은 범주의 무작위성입니다. 추첨을 실행하는 사람을 포함해 누구도 어떤 응모자가 당첨 위치에 놓일지 예측하거나 영향을 줄 수 없습니다.

"모듈로 편향"이 무엇이고, 경품 추첨에서 왜 중요한가요?

많은 단순 무작위 선택기는 숫자를 하나 생성한 뒤 목록의 길이로 나눈 나머지(modulo)를 인덱스로 사용합니다. 무작위 범위가 목록 크기로 나누어떨어지지 않으면 목록 앞쪽에 있는 항목이 아주 조금 더 높은 확률로 선택됩니다. 소규모 추첨에서는 눈에 띄지 않지만 규모가 커지면 실제로 측정 가능한 문제가 됩니다. 이 도구의 셔플 알고리즘은 이 문제를 완전히 피해가므로, 모든 위치가 동일하고 증명 가능한 확률을 가집니다.

팔로워 한 명이 댓글을 다섯 번 남겼습니다 — 그러면 응모권도 다섯 개인가요?

이는 고정된 규칙이 아니라 여러분이 정할 선택입니다. 중복을 목록에 그대로 두면 각 댓글이 별도의 응모권으로 취급되어 그 팔로워의 당첨 확률이 5배가 됩니다. 또는 "중복 제거"를 활성화하면 몇 번 댓글을 남겼든 상관없이 고유한 이름마다 정확히 하나의 응모권이 주어집니다. 당첨자를 확인한 뒤가 아니라 추첨 전에 규칙을 정하고 공지하십시오.

같은 사람이 당첨자와 예비자 양쪽으로 선택될 수 있나요?

이름이 목록에 한 번만 등장한다면 단 한 번의 추첨에서는 불가능합니다 — 당첨자와 예비자는 하나의 셔플에서 나온 서로 다른 위치입니다. 중복을 유지해서 같은 이름이 여러 번 등장한다면, 그 별개의 항목 두 개가 서로 다른 결과 슬롯에 놓이는 것은 수학적으로 가능합니다.

제 참가자 명단이 어딘가에 업로드되나요?

아니요. 셔플, 당첨자 및 예비자 선정을 포함한 추첨 전체가 브라우저 안에서 실행됩니다. 명단은 서버로 전송되지 않으며 페이지를 닫거나 새로고침하는 순간 사라집니다 — 공유하도록 의도된 것은 타임스탬프가 포함된 결과뿐입니다.

댓글

아직 댓글이 없습니다 — 첫 댓글을 남겨보세요!

비슷한 도구