제비뽑기 (랜덤 뽑기·팀 나누기·사다리)

근거공개 난수 drand외 1곳

명단에서 당첨자를 뽑거나, 인원이 고르게 팀을 나누거나, 발표 순서를 무작위로 정합니다. 사다리 타기와, 명단 파일로 뽑고 누구나 결과를 다시 계산해 볼 수 있는 검증 추첨도 탭에 있습니다.

방식

참가자를 입력하고 뽑기를 누르세요.

사용 방법

  1. 참가자 이름을 한 줄에 하나씩(또는 쉼표로) 입력합니다.
  2. 당첨자 뽑기는 정한 인원만큼 중복 없이 뽑고, 팀 나누기는 인원이 고르게 나뉘도록 섞고, 순서 정하기는 전원의 순서를 무작위로 정합니다.
  3. 돌림판은 이름을 칸으로 나눠 판을 돌립니다. 여럿이 화면을 보고 있을 때 결과가 나오는 과정을 함께 볼 수 있습니다.
  4. 결과는 복사해 단체 대화방에 바로 붙여넣을 수 있습니다.

정말 무작위인가

네. 브라우저의 암호학적 난수(crypto.getRandomValues)를 쓰고, 섞을 때는 피셔-예이츠 방법으로 섞습니다. 흔히 쓰는 sort(() => Math.random() - 0.5)는 고르게 섞이지 않아 앞에 있던 사람이 앞에 남기 쉽습니다. 뽑기에서는 그 치우침이 그대로 불공평이 됩니다.

나머지 연산으로 범위를 자를 때 생기는 치우침도 없앴습니다. 예를 들어 0~255 중 하나를 뽑아 10으로 나눈 나머지를 쓰면 0~5가 6~9보다 자주 나옵니다. 이 도구는 그런 값이 나오면 버리고 다시 뽑습니다.

뽑기·팀 나누기·순서 정하기는 무엇이 다른가

방식쓰는 곳결과
당첨자 뽑기경품, 발표자 지정정한 인원만 중복 없이
팀 나누기조별 과제, 운동 경기인원이 고르게 나뉨
순서 정하기발표 차례, 청소 당번전원에게 번호가 하나씩
돌림판여럿이 모여 보는 자리한 사람. 돌아가는 것을 함께 본다

한 사람이 한 결과를 맡아야 한다면(마니또, 당번표) 사다리 타기 탭이 더 알맞습니다. 결과가 겹치지 않는다는 것을 눈으로 보여 줄 수 있기 때문입니다.

돌림판은 왜 먼저 뽑고 나서 돌리나

돌림판을 만드는 흔한 방법은 판을 아무렇게나 돌리고 멈춘 자리를 당첨으로 삼는 것입니다. 그럴듯해 보이지만, 그러면 화면 크기·프레임 수· 애니메이션이 끊기는 것 같은 것들이 결과에 끼어듭니다. 느린 기기에서 특정 칸이 더 자주 나올 수도 있습니다.

그래서 이 돌림판은 먼저 암호학적 난수로 당첨자를 고르고, 그 자리에 멈추도록 회전을 맞춥니다. 보시기에는 똑같지만 공정함은 전혀 다릅니다. 멈춘 뒤에도 바늘 아래 칸과 고른 사람이 같은지 한 번 더 맞춰 봅니다.

공정하게 보이려면

  1. 명단을 먼저 공개하고 나서 뽑습니다. 뽑은 뒤에 명단을 보여 주면 믿기 어렵습니다.
  2. 한 번만 뽑습니다. 마음에 안 든다고 다시 뽑으면 무작위가 아니게 됩니다.
  3. 화면을 공유한 채 뽑습니다. 이 도구는 인터넷으로 아무것도 보내지 않아 그 자리에서 결과가 정해집니다.

사다리 타기 사용 방법

  1. 참가자 이름과 결과를 같은 개수로 한 줄에 하나씩 입력합니다.
  2. 사다리 만들기를 누르면 결과가 가려진 사다리가 만들어집니다.
  3. 위쪽 이름을 누르면 그 사람의 길이 그려지며 결과가 공개됩니다.
  4. 전체 결과를 누르면 모든 길이 한꺼번에 열립니다.

사다리 타기에 넣는 칸의 규칙

넣은 것뜨는 문구
참가자 1명 또는 13명 이상참가자는 2~12명이어야 합니다.
참가자 4명 · 결과 3개참가자(4)와 결과(3)의 개수가 같아야 합니다.

문구가 뜨면 그려 둔 사다리와 요약을 지우고 전체 결과 단추를 잠급니다. 앞선 결과가 새 결과처럼 남지 않게 한 것입니다.

사다리에서 이름을 누르면 보이는 것

사다리타기는 정말 공평한가

겹치지 않는다는 점에서는 언제나 공평합니다. 가로줄을 하나 건널 때마다 두 사람의 자리가 맞바뀔 뿐이고, 두 사람이 같은 자리로 가는 일은 없습니다. 그래서 가로줄을 몇 개 긋든 결과는 언제나 한 사람에 하나씩 짝지어집니다.

수학에서는 이것을 치환(permutation)이라고 부릅니다. 가로줄 하나가 이웃한 둘을 바꾸는 가장 작은 치환이고, 사다리 전체는 그것을 여러 번 겹친 것입니다. 같은 결과에 두 사람이 몰리거나 빈 결과가 남을 수 없는 이유가 여기 있습니다.

다만 가로줄만으로는 확률까지 고르지는 않습니다. 가로줄 수에 끝이 있어 처음 자리에서 멀리 가기 어렵기 때문입니다. 이 도구가 가로줄을 놓는 규칙대로 셈하면, 12명 사다리의 맨 왼쪽에서 내려갈 때 바로 아래 자리에 닿을 확률이 약 16%, 맨 오른쪽 끝자리는 약 2%입니다(고르다면 어느 자리든 8.3%).

그래서 이 도구는 사다리를 만들 때 아래 결과의 자리를 한 번 섞습니다. 결과 칸에 적은 차례와 사다리 아래 자리가 서로 상관없어지므로, 어느 이름에서 내려가든 각 결과에 닿을 확률이 같습니다. 4명이면 결과마다 25%, 12명이면 8.3%입니다. 같은 결과를 여러 번 적었으면 그만큼 더합니다 — 처음 예시는 넷 가운데 "꽝"이 둘이라 누구든 꽝이 나올 확률이 50%입니다.

먼저 고르면 유리할까

아닙니다. 이름을 적은 차례가 곧 위쪽 자리인데, 아래 결과의 자리를 섞어 놓기 때문에 어느 자리든 각 결과가 나올 확률이 똑같습니다. 결과 칸을 본 사람도 어느 자리 아래에 무엇이 있는지 알 수 없습니다.

다만 이름과 결과를 다 적은 뒤 사람들이 보는 앞에서 사다리를 한 번만 만들기로 정해 두세요. 사다리 만들기는 몇 번이든 다시 누를 수 있어서, 결과를 보고 다시 만들었다는 의심이 남을 수 있습니다.

이 도구는 결과를 가린 채 사다리를 먼저 만들고, 이름을 눌러야 길이 드러납니다. 가로줄과 결과 자리는 브라우저의 암호학적 난수로 정하기 때문에 다음에 무엇이 나올지 미리 알 수 없습니다.

가로줄은 몇 개가 적당한가

가로줄이 적으면 자리를 거의 안 바꾼 사람이 생겨 눈으로도 결과가 읽힙니다. 이 도구는 가로줄을 놓는 칸 수(높이)를 사람 수 × 3, 다만 8칸보다 적지 않게 정합니다.

참가자2명3명4명6명8명10명12명
높이(칸)891218243036

칸마다 이웃한 두 세로줄 사이에 가로줄을 놓을지를 반반으로 정하되, 바로 왼쪽에 가로줄이 있으면 놓지 않습니다. 그래서 가로줄 수는 사다리마다 다르고, 평균으로는 6명일 때 약 32개, 12명일 때 약 136개입니다. 가로줄이 하나도 없는 사이가 생기면 하나를 더 놓습니다.

길 따라가기 예

세 사람, 높이 3칸인 작은 사다리를 손으로 따라가 봅니다(이 도구에서 3명이면 9칸입니다).

위에서부터 한 칸씩 내려가며, 가로줄을 만나면 건너갑니다.

세 사람이 세 자리에 하나씩 닿습니다. 그 자리에 어떤 결과가 놓였는지는 사다리를 만들 때 섞어 둔 대로입니다.

사다리 타기는 이럴 때 씁니다

단순히 몇 명을 뽑기만 하면 될 때는 제비뽑기 탭이 더 빠르고, 번호만 필요하면 난수 생성기를 쓰세요.

명단 추첨 사용 방법

  1. 명단 — 엑셀 · CSV · 글 파일을 고르거나 붙여 넣습니다. 제목 줄과 빈 줄은 알아서 빼고, 무엇을 뺐는지 한 줄로 알려 줍니다. 이름과 연락처가 함께 있으면 "이름 + 연락처 끝 4자리"로 같은 이름을 가를 수 있습니다.
  2. 옵션 — 등수별 인원(최대 10등)과 예비 당첨자, 같은 사람이 여러 줄일 때 한 번만 셀지 응모한 만큼 셀지, 결과에 이름을 가릴지를 고릅니다.
  3. 추첨 — 바로 추첨은 누른 뒤 3초 안에 나오는 공개 난수로 뽑습니다. 예고 추첨은 시각을 정해 예고 카드와 링크를 먼저 만듭니다.
  4. 결과 — 당첨자와 함께 추첨 증명(추첨 시각 · 명단 지문 · 공개 난수 · 결과 지문 · QR)이 나옵니다. 증명서 이미지를 저장하거나 검증 링크를 참가자에게 알리세요.

누구나 같은 결과를 다시 계산할 수 있는 까닭

브라우저 안에서 만든 난수로만 뽑으면 그 난수를 주최자가 만들었다는 의심을 풀 수 없습니다. 이 도구는 주최자가 고를 수 없는 바깥의 공개 난수(drand)와 명단의 지문으로 결과를 정합니다. 계산은 정해져 있어서, 같은 명단과 같은 회차면 누구 기기에서 계산해도 같은 당첨자가 같은 차례로 나옵니다.

  1. 명단 정리: 글자를 같은 꼴(NFC)로 맞추고, 앞뒤 빈칸을 떼고, 가운데 빈칸은 하나로 줄입니다. 연락처는 숫자만 남깁니다. 그다음 유니코드 차례로 늘어놓습니다 — 파일의 줄 차례나 줄바꿈 방식(윈도 · 맥)은 결과를 바꾸지 않습니다.
  2. 명단 지문: 정리한 명단 전체의 SHA-256. 이름이 한 글자만 달라도 완전히 다른 값이 됩니다.
  3. 씨앗: 명단 지문 · 옵션(대상 열 · 같은 사람 처리 · 등수별 인원 · 예비) · 공개 난수의 회차와 값을 이어 SHA-256으로 만듭니다.
  4. 뽑기: 씨앗에서 이어지는 SHA-256 값을 수로 바꿔 남은 명단에서 한 명씩 고릅니다. 나머지 연산 때문에 앞쪽 사람이 조금 더 잘 뽑히는 치우침은 그 범위를 넘는 수를 버리는 방식으로 없앱니다. 고른 사람의 줄은 모두 지워 한 사람이 두 번 당첨되지 않습니다.
  5. 결과 지문: 씨앗과 당첨 차례 전체의 SHA-256. 검증할 때 이 값이 같으면 결과가 그대로라는 뜻입니다.

결과 화면의 "계산을 따라 해 보기"에 그 추첨에 넣은 값이 차례로 적혀 있어, 다른 프로그램으로도 똑같이 계산해 볼 수 있습니다.

바로 추첨과 예고 추첨

방식증명이 보여 주는 것알맞은 때
바로 추첨결과가 나중에 바뀌지 않았고, 난수를 주최자가 고르지 않았다그 자리에서 함께 보며 뽑을 때
예고 추첨위에 더해, 여러 번 돌려 마음에 드는 결과를 고르지 않았다온라인 이벤트처럼 참가자가 추첨을 지켜볼 수 없을 때

명단 추첨에서 알아 둘 것

자주 묻는 질문

추첨 결과는 공정한가요?

브라우저의 암호학적 난수(crypto.getRandomValues)로 뽑고, 특정 사람이 더 잘 뽑히지 않도록 편향을 없애는 방식을 씁니다. 모든 참가자의 당첨 확률이 같은지 자동 테스트로 확인합니다.

같은 이름이 두 번 들어가면 어떻게 되나요?

"중복 이름 한 번만" 옵션을 켜면 같은 이름을 하나로 합칩니다. 끄면 이름을 여러 번 넣은 만큼 당첨 확률이 올라가므로, 응모 횟수에 따라 가중치를 줄 때 쓸 수 있습니다.

팀 인원이 딱 나누어떨어지지 않으면요?

인원 차이가 최대 1명이 되도록 앞쪽 팀부터 한 명씩 더 배정합니다. 예를 들어 10명을 3팀으로 나누면 4명, 3명, 3명이 됩니다.

돌림판은 돌려서 멈춘 자리가 당첨인가요?

보기에는 그렇지만, 실제로는 반대로 만듭니다. 먼저 암호학적 난수로 당첨자를 고르고, 그 자리에 멈추도록 회전을 맞춥니다. 그래야 화면 크기나 애니메이션이 끊기는 것 같은 것들이 결과에 끼어들지 않습니다. 눈으로는 똑같지만 공정함은 전혀 다릅니다.

움직임을 줄이는 설정을 켜 두었는데요.

그러면 돌리지 않고 결과만 바로 보여 드립니다. 뽑는 방식은 똑같습니다.

참가자 명단이 저장되거나 서버로 가나요?

가지 않습니다. 명단은 이 브라우저 안에서만 쓰이고, 페이지를 닫으면 사라지니 필요하면 결과를 복사해 두세요. 명단 추첨 탭도 서버에는 공개 난수의 회차 번호만 묻습니다. 추첨 증명과 검증 링크에는 명단의 지문(SHA-256)만 실리고, 이름 · 연락처는 실리지 않습니다.

사다리 결과는 미리 정해져 있나요?

"사다리 만들기"를 누르는 순간 가로줄 위치와 아래 결과의 자리가 무작위로 정해지고, 결과는 그 사다리를 그대로 따라 내려간 것입니다. 둘 다 암호학적 난수로 정하고, 같은 높이에 붙은 가로줄은 만들지 않아 길이 갈라지지 않습니다.

가로줄이 없어 곧장 내려가는 칸은 없나요?

이웃한 두 세로줄 사이에는 가로줄이 최소 하나 이상 생기게 해서, 아무 영향 없이 곧장 내려가는 칸이 없도록 했습니다.

몇 명까지 할 수 있나요?

2명부터 12명까지 할 수 있습니다. 참가자 이름과 결과(당첨, 꽝, 벌칙 등)를 같은 개수로 입력하세요.

결과를 한 번에 보려면?

"전체 결과"를 누르면 모든 참가자의 결과가 한꺼번에 나옵니다. 한 명씩 이름을 눌러 경로가 그려지는 모습을 보는 재미도 있습니다.

결과 칸에 적은 차례대로 사다리 아래에 놓이나요?

아닙니다. 사다리를 만들 때마다 결과의 자리를 섞어서 놓습니다. 결과 칸 첫 줄에 적은 것이 맨 왼쪽 아래에 있다는 보장이 없어서, 결과 칸을 본 사람도 어느 자리가 무엇인지 알 수 없습니다. 이름을 눌러 길이 닿아야 그 자리의 결과가 드러납니다.

한 줄에 여러 이름을 쓸 수 있나요?

쉼표로 나눠 쓰면 됩니다. "홍길동, 김철수"는 두 사람입니다. 같은 까닭으로 결과에 쉼표를 넣으면 둘로 나뉩니다 — "1등,2등"은 결과 2개가 됩니다. 결과 글 안에서는 쉼표 대신 가운뎃점이나 띄어쓰기를 쓰세요.

같은 이름을 두 번 누르면 어떻게 되나요?

한 번만 공개됩니다. 이미 연 사람의 길은 다시 그리지 않고, 아래 요약에도 한 번만 들어갑니다. 요약은 "이름 → 결과" 꼴로 연 차례대로 쌓입니다.

"전체 결과"를 누르면 이미 연 길은 어떻게 되나요?

사다리를 다시 그린 뒤 모든 길을 한꺼번에 엽니다. 요약도 처음부터 다시 쌓여 참가자를 적은 차례대로 한 줄씩 나옵니다. 가로줄과 결과 자리는 바뀌지 않고, 이때는 선이 그려지는 움직임 없이 바로 보입니다.

"사다리 만들기"를 다시 누르면 어떻게 되나요?

가로줄과 결과 자리를 새로 정해 새 사다리를 만들고, 앞서 연 길과 요약을 지웁니다. 다시 만드는 것을 막는 장치는 없으니, 여럿이 할 때는 "한 번 만든 사다리로 정한다"고 먼저 약속해 두세요.

링크를 보내면 같은 사다리가 열리나요?

아닙니다. 이름 · 결과 · 사다리는 주소에 담기지 않습니다. 링크를 연 사람은 처음 예시가 든 화면을 봅니다. 결과를 남기려면 요약 줄을 따로 적어 두세요.

길이 그려지는 움직임 없이 바로 나타나요.

기기에서 "동작 줄이기"를 켜 두면 길이 그려지는 움직임 없이 바로 나타납니다. "전체 결과"로 한꺼번에 열 때도 움직임이 없습니다.

명단 추첨 탭은 제비뽑기 탭과 무엇이 다른가요?

제비뽑기 탭은 이름을 적어 가볍게 뽑습니다. 명단 추첨 탭은 경품 · 이벤트처럼 결과를 남에게 보여 줘야 하는 추첨을 위한 것입니다. 명단 파일을 그대로 읽고, 등수와 예비 당첨자를 나누며, 누구나 같은 결과를 다시 계산해 볼 수 있는 추첨 증명을 함께 만듭니다.

주최자가 마음에 들 때까지 다시 돌리면요?

바로 추첨은 그것까지 막지는 못합니다. 증명이 보여 주는 것은 "그 회차의 공개 난수와 이 명단으로 계산하면 이 결과가 나온다"는 것, 곧 결과가 나중에 바뀌지 않았다는 것입니다. 다시 돌리지 않았다는 것까지 보이려면 예고 추첨으로 추첨 시각을 먼저 알려 두세요. 그 시각의 공개 난수는 미리 아무도 알 수 없습니다.

공개 난수는 어디서 오나요?

drand입니다. 여러 나라의 대학 · 기업이 함께 3초마다 내는 난수로, 한 번 나온 회차의 값은 누구나 번호로 다시 받아 볼 수 있습니다. 에브리유틸 서버가 그 값을 받아 전달하고, 결과 화면에 그 회차를 drand에서 바로 여는 주소를 둡니다.

검증은 어떻게 하나요?

검증 링크(또는 증명서의 QR)를 열고 추첨에 쓴 명단 파일을 넣으면, 이 기기에서 같은 계산을 다시 해 "일치합니다" 또는 "명단이 다릅니다"를 알려 줍니다. 명단이 한 글자라도 다르면 지문이 달라집니다. 명단의 줄 차례가 바뀐 것은 결과에 영향이 없습니다.

이름을 가려서 보여 줄 수 있나요?

결과의 이름은 처음부터 가운데를 가립니다(홍*동, 연락처는 끝 4자리). 주최자는 결과 위의 "이름 보기"로 풀어 볼 수 있고, 증명서 이미지는 그때 화면에 보이는 대로 저장됩니다. 당첨자 CSV에는 연락할 수 있게 가리지 않은 값이 담깁니다.

이 도구가 도움이 되었다면 공유해 주세요

계산 근거

이 계산기가 쓰는 세율·요율·기준의 출처입니다. 숫자가 맞는지 직접 확인해 보세요.

결과가 이상한가요? 알려 주세요
어떤 이야기인가요?

적어 주신 글과 접속 국가만 저장합니다. 도구에 넣은 값이 자동으로 함께 보내지는 일은 없으니, 필요한 내용은 위에 직접 적어 주세요. 답장을 드릴 수는 없습니다.

계산 결과는 참고용이며 법적 효력이 없습니다.