뽑는 방식
각 항목에 가중치(기본 1)를 두고 가중치 합 범위에서 난수를 하나 뽑아 어느 구간에 떨어지는지로 결정합니다. 중복 없음이면 뽑힌 항목을 목록에서 빼고 다시 뽑기 때문에, 여러 개를 뽑을 때 앞 순서가 더 유리하거나 불리한 일은 없습니다(순서 없이 n개를 동시에 고르는 것과 같은 분포). 중복 허용이면 매번 전체 목록에서 뽑습니다. 계산은 브라우저 안에서만 이루어집니다.
난수의 출처
Math.random()은 구현에 따라 예측이 가능할 수 있어, 이 도구는 브라우저의 암호학적 난수 crypto.getRandomValues()를 씁니다. 또 단순히 난수를 항목 수로 나눈 나머지를 쓰면 큰 수 쪽 항목이 아주 미세하게 덜 뽑히는 편향(modulo bias)이 생기므로, 범위를 벗어나는 값은 버리고 다시 뽑는 방식으로 정확히 균등하게 맞췄습니다.
가중치 쓰는 법
이름*3, 이름 x 2, 이름×1.5 모두 인식합니다. 가중치는 상대적 비율이라 A*2, B*1과 A*4, B*2는 같습니다. 참여 횟수에 따라 당첨 확률을 다르게 주거나, 응모권 수대로 가중치를 넣는 용도에 맞습니다. 중복 없음 모드에서는 한 번 뽑힌 항목이 빠지므로 가중치는 "뽑히는 순서"에만 영향을 줍니다.
한계와 팁
결과는 저장되지 않고 새로 누를 때마다 바뀝니다. 공개 추첨처럼 사후 검증이 필요하면 목록과 결과 화면을 함께 캡처하는 수밖에 없습니다. 항목 이름이 같은 줄이 여러 개 있으면 서로 다른 항목으로 취급되어 그만큼 확률이 올라가니, 의도한 것이 아니라면 줄 정리 도구로 중복을 먼저 제거하세요.
자주 묻는 질문
특정 항목이 계속 나와요. 조작된 건가요?
난수는 매번 독립적이라 같은 항목이 연속으로 나오는 일은 자연스럽습니다. 10개 중 하나를 3번 연속 뽑힐 확률도 0.1%로, 많이 시도하면 흔히 봅니다.
뽑을 개수가 항목 수보다 많으면요?
중복 없음에서는 항목 수까지만 뽑아 전체를 무작위 순서로 나열합니다. 순서 정하기에 쓸 수 있습니다. 중복 허용이면 개수 제한 없이 뽑습니다.