룰렛

이름이나 항목을 넣고 룰렛을 돌려 하나를 무작위로 뽑습니다. 모든 항목이 같은 넓이를 차지하고, 자연스러운 감속으로 멈춰 결과를 표시합니다. 당첨자를 목록에서 자동으로 빼는 모드도 켤 수 있습니다.

Loading…

모든 처리는 브라우저 내부에서 실행됩니다 — 파일·입력은 서버로 전송되지 않습니다.

사용법

텍스트 영역에 한 줄에 한 항목씩 입력합니다 — 이름, 메뉴 후보, 선물 받을 사람 등 무엇이든 가능합니다. 휠은 실시간으로 갱신됩니다. **돌리기** 를 누르면 몇 바퀴 회전한 뒤 감속하며 당첨 섹터에서 멈춥니다. 각 항목은 이름 길이와 관계없이 같은 면적을 차지하므로 당첨 확률은 모두 `1 / N` 입니다.

**당첨자를 목록에서 빼기** 를 켜면 토너먼트 식 추첨이 가능합니다. 돌릴 때마다 당첨자가 목록에서 빠지므로 반복하면 전원의 순위를 매길 수 있습니다. 선택은 `Math.random()` 을 사용하고 시각적인 회전은 당첨자를 정한 *뒤* 에 계산하므로, 휠이 우연히 멈춘 곳이 결과가 되는 것이 아니라 애니메이션이 정직합니다. 데이터는 브라우저 밖으로 나가지 않습니다.

예제

점심 메뉴 — 식당 5 곳

입력
Pho Saigon
Ramen Daisho
Taco Plaza
Green Bowl
Curry House
출력
→ Ramen Daisho   (each option has 1/5 = 20% chance)

사무실에서 흔한 용도 — 동료 5 명, 식당 5 곳, 결정 안 됨. 한 번 돌리고 따릅니다. 한 사람이 정하는 게 아니라 의식처럼 뽑히는 분위기를 만드는 것이 휠의 본질입니다.

10 명 순위 매기기 — 탈락 모드

입력
10 names, "Remove winner after spin" ON
spin 10 times → ranked list 1st…10th
출력
1st: Bob
2nd: Alice
3rd: Charlie
…
10th: Eve

드래프트 순서, 발표 순서, 당번 돌리기에 사용합니다. 회차마다 남은 항목이 줄어 확률이 바뀌지만, 처음에 넣은 모두가 순위에 정확히 한 번씩 등장합니다.

자주 묻는 질문

정말 모든 항목이 같은 확률인가요?

예. 당첨은 `Math.floor(Math.random() * N)` 으로 먼저 결정되며 이는 `0..N-1` 의 균등 분포입니다. 그 후 휠이 선택된 섹터를 지시침 아래에 멈추도록 회전하고, 보기 좋게 몇 바퀴가 더해집니다. 시각 효과는 난수 위에 얹힌 표현일 뿐 난수 자체는 아닙니다.

항목별로 가중치를 줄 수 있나요?

직접은 안 됩니다 — 한 항목당 한 섹터입니다. 가중치를 주려면 항목을 반복해 쓰세요. `Alice` 를 3 줄, `Bob` 을 1 줄 적으면 Alice 의 확률이 75% 가 됩니다. 휠은 살짝 지저분해지지만 보는 사람이 섹터를 세어 확인 가능한 투명한 방식입니다.

항목은 몇 개까지 가능한가요?

상한은 없지만 16 항목을 넘으면 라벨이 줄어들고 30 항목을 넘으면 휠이 답답해집니다. 대규모 추첨에는 이 도구의 탈락 모드를 반복하거나 스프레드시트의 난수 키 정렬을 쓰는 편이 낫습니다.

이전에 멈춘 위치가 결과에 영향을 주나요?

아니요. 각 회전은 `Math.random()` 으로 새 난수 인덱스를 뽑으며 휠의 현재 각도와 무관합니다. 시작 각도는 감속 애니메이션의 모양에만 영향을 줄 뿐, 최종적으로 어떤 섹터가 지시침 아래에 오는지에는 영향이 없습니다.

관련 도구