만든 이유와 공정성
모임에서 누가 계산할지, 발표 순서, 팀 짜기를 정할 때 바로 열어서 쓸 수 있는 뽑기가 필요했어요. 광고 창이나 가입 없이, 결과를 의심하지 않아도 되도록 만들었어요.
결과를 정하는 방법
- 암호학적 난수 — 브라우저에 들어 있는 Web Crypto(crypto.getRandomValues)를 써요. 보안용으로 만든 난수라 다음 값을 예측할 수 없어요.
- 치우침 없애기 — 큰 난수를 n으로 나눈 나머지를 그냥 쓰면 앞쪽 숫자가 아주 조금 더 나와요. 그래서 치우침이 생기는 구간의 값은 버리고 다시 뽑아요(거부 표본추출).
- 섞기 — 피셔-예이츠 방식으로 섞어 모든 순서가 같은 확률로 나와요.
사다리 타기의 치우침
가로줄을 무작위로 그은 사다리는 출발한 줄 바로 아래로 도착하는 경향이 조금 있어요. 4명이면 바로 아래 칸에 도착할 확률이 25%가 아니라 약 31%예요(1만 판 시험). 그래서 결과를 아래 칸에 놓는 순서를 따로 섞어요. 이렇게 하면 사다리 모양과 상관없이 누구나 결과마다 같은 확률이 돼요. 결과 칸은 「?」로 가려 두어 미리 보고 자리를 고를 수도 없어요.
시험해 본 것
주사위 6만 번, 세 개 섞기 3만 번, 사다리 1만 2천 판을 돌려 각 결과가 고르게 나오는지 자동 시험으로 확인해요. 사이트를 고칠 때마다 이 시험을 통과해야 올려요.
입력한 이름은 어디로 가나요
어디로도 가지 않아요. 뽑기는 이 브라우저 안에서만 하고, 서버로 보내거나 저장하지 않아요. 자세한 내용은 개인정보 처리에 적어 뒀어요.