당첨자 추첨, 명단 붙여넣고 시드로 공정하게 뽑기
이벤트 당첨자를 뽑아야 하는데, 참가자들이 결과를 믿을 수 있게 뽑는 방법이 있을까요?
한 줄 답
명단을 붙여넣으면 겹친 이름은 한 번만 세고 당첨자와 예비 당첨자를 뽑아 줘요. 같은 명단에 결과에 적힌 시드를 넣으면 누가 다시 뽑아도 같은 결과가 나오고, 명단은 이 브라우저 밖으로 나가지 않아요.
넣은 글과 파일은 이 브라우저 안에서만 처리합니다. 이 사이트의 서버로 올라가지 않고, 어디에도 저장되지 않습니다.
주의
- 시드는 결과를 다시 만들어 볼 수 있게 할 뿐, 마음에 드는 결과가 나올 때까지 다시 뽑지 않았다는 증거는 되지 않습니다. 그것까지 보이려면 명단을 마감하기 전에 시드를 먼저 알려 둡니다.
- 이름 앞뒤의 공백과 이름 안의 겹친 공백은 하나로 정리하지만, 대소문자나 「@」 유무가 다른 이름은 다른 사람으로 셉니다. 인스타그램 아이디처럼 표기가 섞일 수 있는 명단은 붙여넣기 전에 맞춰 둡니다.
어떻게 뽑나요
- 참가자 명단을 붙여넣습니다. 한 줄에 한 명이고, 댓글에서 모은 이름처럼 쉼표로 이어진 명단이면 「줄바꿈과 쉼표」를 고릅니다. 명단 아래에 참가자 수와 겹쳐서 한 번만 센 이름의 수가 바로 나옵니다.
- 당첨 인원과 예비 당첨 인원을 정합니다. 예비 당첨은 당첨자와 연락이 닿지 않을 때 넘어갈 순번입니다.
- 「추첨하기」를 누릅니다. 당첨자와 예비 당첨자가 뽑힌 순서대로 나오고, 그 아래에 시드 · 명단 지문 · 추첨 시각이 붙습니다.
- 「결과 복사」로 결과를 복사해 공지에 붙입니다. 복사한 글 끝의 주소를 열면 같은 인원과 같은 시드가 채워진 화면이 열리고, 명단만 다시 붙여넣으면 같은 결과를 확인할 수 있습니다.
시드가 공정함을 보여 주는 방법
시드는 추첨 순서를 정하는 글자입니다. 처음 열면 무작위 시드가 들어 있고, 「새 시드」로 바꾸거나 직접 적을 수도 있습니다. 앞뒤 공백을 뺀 시드가 한 글자라도 같으면, 같은 명단에서 언제 어느 기기로 뽑아도 같은 사람이 뽑힙니다.
결과를 알릴 때 시드와 명단 지문을 함께 적어 두면, 참가자는 공개된 명단을 붙여넣고 시드를 넣어 같은 당첨자가 나오는지 직접 확인할 수 있습니다.
다만 이것은 「이 시드로 뽑았다」까지만 보여 줍니다. 마음에 드는 결과가 나올 때까지 시드를 바꿔 가며 뽑지 않았다는 것까지 보이려면, 응모를 마감하기 전에 시드를 먼저 정해 알립니다. 예를 들어 「마감 뒤 첫 로또 추첨의 당첨 번호를 시드로 쓴다」처럼 누구도 미리 알 수 없고 나중에는 누구나 확인할 수 있는 값을 정해 두면, 주최 측도 결과를 고를 수 없습니다.
명단은 어디에도 남지 않습니다
명단은 이 화면에서만 다루고, 주소에도 브라우저 저장소에도 넣지 않습니다. 주소의 # 뒤에는 당첨 인원 · 예비 인원 · 나누는 기준 · 시드 같은 설정만 붙습니다. 결과의 주소를 다른 사람에게 보내도 명단은 전해지지 않으므로, 확인할 사람은 공개된 명단을 따로 붙여넣습니다.
자주 묻는 것
- 명단을 붙여넣은 순서가 바뀌면 결과도 바뀌나요?
- 바뀌지 않습니다. 추첨 전에 명단을 가나다·알파벳 순으로 정렬하기 때문에, 같은 이름들이 들어 있으면 붙여넣은 순서와 상관없이 같은 시드에서 같은 결과가 나옵니다.
- 명단 지문은 무엇인가요?
- 정렬한 명단을 SHA-256이라는 방식으로 요약한 값의 앞 16자리입니다. 이름이 하나만 달라도 전혀 다른 값이 나오므로, 결과를 알릴 때 함께 적어 두면 참가자가 자기 명단으로 같은 값이 나오는지 맞춰 볼 수 있습니다.
- 이 사이트가 없어져도 결과를 확인할 수 있나요?
- 확인할 수 있습니다. 시드(UTF-8)를 SHA-256으로 바꾼 값의 앞 16바이트를 리틀 엔디언 32비트 정수 넷으로 읽어 xoshiro128** 생성기의 상태로 쓰고, 정렬한 명단에 앞에서부터 피셔–예이츠 섞기를 하는 방식이라 같은 순서를 다른 프로그램으로 다시 짤 수 있습니다. 두 방식의 정의는 아래 출처에 있습니다.
- 엑셀 한 열을 그대로 붙여넣어도 되나요?
- 됩니다. 엑셀에서 한 열을 복사하면 칸마다 한 줄이 되므로 그대로 붙여넣으면 됩니다. 여러 열을 함께 복사하면 한 줄에 칸들이 탭으로 이어져 한 사람으로 세어지니, 이름이 든 열만 복사합니다.
출처
본문의 숫자와 조건은 아래 출처에서 가져왔습니다. 직접 잰 값은 따로 표시합니다.
- 1FIPS 180-4: Secure Hash Standard (SHS)
시드와 명단 지문에 쓰는 SHA-256의 정의
- 2xoshiro / xoroshiro generators and the PRNG shootout
시드에서 순서를 만드는 난수 생성기 xoshiro128**의 참조 구현

