생활·재미
랜덤 추첨기
룰렛 회전으로 점심·벌칙부터 팀 나누기·자리 배치까지. 모바일에서도 빠른 칩 입력.
본 도구는 참고용입니다
- 입력값·환경에 따라 결과가 달라질 수 있으며 정확성을 보장하지 않습니다.
- 중요한 의사결정에는 전문가 조언을 받으세요.
- 본 도구는 Math.random() 기반 의사난수 알고리즘을 사용합니다.
5가지 추첨 모드
🎰 룰렛 (메인)
4초 회전 → 결과 발표. 항목별 가중치 토글로 단순/불균등 둘 다
⚖️ 가중치 추첨
1~20 가중치 + 확률 미리보기 + 여러 개 뽑기
👥 팀 나누기
명단 → 좌우 2분할 결과. 리더·묶기·떨어뜨리기 옵션
📋 순서·자리
발표 순서 / 행×열 자리. 고정·인접 회피
📊 공정성 검증
100~100,000회 시뮬레이션으로 분포 직접 확인
모바일에서도 빠른 칩 입력
텍스트박스에 줄바꿈으로 명단을 채우던 방식 대신, 이름 한 개씩 Enter로 칩이 추가되는 방식을 채택했습니다. 모바일 키보드에서도 자연스럽게 입력·삭제할 수 있습니다.
- Enter / 쉼표 — 칩 추가
- 붙여넣기 — "김민수, 이지은, 박서준" 또는 여러 줄 한 번에 → 자동 분리
- Backspace — 입력 칸이 빈 상태에서 누르면 마지막 칩 삭제
- × 버튼 — 개별 칩 제거
- 템플릿 카드 — 음식·이름·번호·옵션을 클릭 한 번에 채움
- 중복 표시·제거 — 같은 이름 있으면 경고 + 한 번 클릭으로 정리
룰렛 — 가장 자주 쓰는 모드
본 도구의 룰렛은 단순 추첨과 가중치 추첨을 모두 포함합니다. 평소엔 모든 칸 같은 크기로 균등 추첨, 가중치 토글을 켜면 항목별 ×1~×10 비중을 슬라이더로 조정해 칸 크기가 달라집니다.
🎰 점심 메뉴
못 정할 때 가장 빠른 결정
🎰 벌칙 게임
모임·MT·동아리 게임
🎰 이벤트 추첨
경품·당첨자 시각화
🎰 발언 순서
회의·스터디 발언자 룰렛
가중치 추첨 — 확률 차등
같은 항목을 여러 번 입력하는 대신 가중치로 확률을 조절합니다. 확률 = 항목 가중치 / 전체 가중치 합.
예: A=3, B=1, C=2 → 총합 6
→ A: 3/6 = 50%, B: 1/6 ≈ 17%, C: 2/6 ≈ 33%
활용 예: 이벤트 응모권 횟수 = 가중치 / 선호 메뉴 비중 / 게임 아이템 등급별 차등 / 벌칙 분산(많이 받은 사람 가중치 ↓).
팀 나누기 알고리즘
결과는 좌우 2열 카드로 표시 — 한 화면에 A팀·B팀이 동시에 보입니다. 모바일에서도 가로 분할 유지.
- 리더 우선 배치 — 각 팀에 1명씩 (지정 시)
- 함께 묶을 그룹 — 가장 작은 팀에 통째로 배치
- 나머지 셔플 분배 — Fisher-Yates 무작위 셔플 후 가장 작은 팀에 순환 배치
- 떨어뜨릴 그룹 회피 — 같은 그룹 멤버가 있는 팀 자동 회피
활용: 학교 조별 활동·회사 회식 자리·운동 경기 팀·동아리 모임·게임 멀티플레이.
발표 순서·자리 배치
자리 배치 결과는 행·열 수에 따라 폰트 크기가 자동 조정됩니다. 다만 열이 많거나 이름이 매우 길면 좁은 셀에서 잘릴 수 있으며, 셀에 마우스를 올리면 툴팁으로 전체 이름을 확인할 수 있습니다. 발표 순서는 1번·마지막 고정과 제외자 옵션 지원.
학기 초 자리
학생 명단 → 행×열 자리 자동
발표회 순서
1번·마지막 고정 + 제외자
회의 좌석
같은 부서 떨어뜨리기
시험 좌석
커닝 방지 인접 회피
결혼식 자리
하객 무작위 + 그룹 묶기
면접 좌석
지원자 행렬 배치
공정성 검증 — 큰 수의 법칙
본 도구가 정말 공정한지 의심된다면 [공정성] 탭에서 직접 시뮬레이션할 수 있습니다.
| 시뮬 횟수 | 최대 상대 편차 (4개 균등·중앙값 근사) | 해석 |
|---|---|---|
| 100회 | ±20% 안팎 | 작은 표본 — 변동 큼 |
| 1,000회 | ±7% 안팎 | 상당히 균등 |
| 10,000회 | ±2% 안팎 | 거의 균등 |
| 100,000회 | ±0.7% 안팎 | 이론값에 매우 근접 |
큰 수의 법칙(Law of Large Numbers): 시행 횟수가 많을수록 실제 비율이 기대 확률에 수렴합니다. 위 “상대 편차”는 (실제−기대)/기대 × 100으로, 공정성 탭의 “편차” 열과 같은 기준입니다(절대 비율 %p 차이는 이보다 작습니다). 항목 수·가중치에 따라 값이 달라지므로 대략적 경향입니다.
사다리 게임은 정말 공정할까
사다리타기(아미다쿠지)는 의외로 완전한 균등 추첨이 아닙니다. 통계물리 학술지 분석(Inoue, “Statistical analysis on Amida-kuji”, Physica A 369권 2호, 2006)에 따르면 사다리에서 도착 위치의 확률분포는 1차원 확산 과정을 따릅니다 — 가로줄 하나가 확산의 한 걸음이어서, 가로줄이 적으면 출발 위치 바로 아래 근처에 도착할 확률이 균등보다 높아집니다.
| 사다리 구성 | 균등이라면 | 실제 계산 |
|---|---|---|
| 세로 3줄 · 가로 3개 | 각 33.3% | 전수 8패턴 — 출발 위치별 당첨 확률 25% / 37.5% / 37.5% |
| 세로 6줄 · 가로 10개 | 각 16.7% | 바로 아래 도착 37% 이상, 반대편 끝은 약 1% |
| 세로 6줄 · 가로 50개 | 각 16.7% | 14.7~18.7% — 여전히 완전 균등에 못 미침 |
세로 3줄 전수 계산은 언론 보도에 따르면 일본 슈쿠토쿠대학 이가라시 가즈히로 특임교수가 검증한 값으로(데일리스포츠 2018), 당첨이 오른쪽 끝에 보일 때 출발 위치에 따라 당첨 확률이 갈리며 일반적으로 당첨 위치 바로 위 출발이 가장 유리합니다. 세로 6줄 수치는 전이행렬(마르코프 연쇄) 계산값입니다.
정리하면 사다리의 공정성은 가로줄 수에 따라 달라집니다 — 가로줄이 충분히 많아지면 균등에 접근하지만 수렴이 느립니다. 사다리를 쓴다면 가로줄을 넉넉히 추가하고 당첨 위치를 아무도 모르는 상태로 정하는 것이 좋습니다. 반면 본 도구의 순서·팀 추첨은 사다리 구조를 거치지 않고 균등 셔플로 직접 뽑고, 룰렛은 가중치에 비례한 확률로 직접 추첨하기 때문에 구조적 편향이 없습니다.
이 도구의 난수는 어떻게 만들어지나
명단 섞기(팀·순서·자리)는 Fisher-Yates 셔플을 사용합니다. 배열 끝에서부터 각 자리를 아직 확정되지 않은 자리 중 하나와 무작위로 맞바꾸는 방식으로, 모든 순열이 같은 확률로 나오는 균등 셔플의 표준 알고리즘입니다(컴퓨터용 O(n) 구현 원전: Durstenfeld, CACM Algorithm 235, 1964). 가중치 추첨은 Math.random() 값을 가중치 합의 누적 구간에 대응시켜 뽑습니다.
MDN 공식 경고 (2026-07 기준): Math.random()은 0 이상 1 미만의 의사난수를 근사 균등 분포로 반환하지만, 암호학적으로 안전한 난수는 제공하지 않으므로 보안 관련 용도로 쓰지 말라고 MDN 문서가 명시합니다. 점심 메뉴·자리 배치·발표 순서 같은 일상 추첨에는 충분히 공정하지만, 경품 추첨처럼 금전·이해관계가 큰 추첨이라면 암호학적 난수(crypto.getRandomValues()— MDN 기준 “암호학적으로 강한 난수”) 기반 도구나 공증 절차를 권장합니다.
흔한 잘못된 구현이 sort(() => Math.random() - 0.5)입니다. MDN sort 규격상 비교 함수는 같은 쌍에 항상 같은 결과를 줘야 하며, 어기면 동작 자체가 미정의라 편향이 생깁니다. 실제로 2010년 EU 브라우저 선택 화면(browserchoice.eu)이 이 방식을 써서 1만 회 시뮬레이션(IE 엔진)에서 Internet Explorer가 5개 중 마지막 위치에 50.34% 몰리는 편향이 확인됐고(Rob Weir 분석), Microsoft도 알고리즘 수정을 인정했습니다(The Register 2010-03-09 보도). 본 도구는 이 방식을 쓰지 않습니다.
자주 묻는 질문 (FAQ)
Q1. 본 추첨기는 정말 공정한가요?
본 도구는 JavaScript의 Math.random()을 사용합니다. 이는 의사난수(pseudo-random)로 완벽한 무작위는 아니지만 실용적인 추첨에는 충분히 공정합니다. [공정성] 탭에서 1,000~100,000회 시뮬레이션으로 직접 확인 가능. 법적·계약적 효력이 있는 추첨에는 공증 절차를 권장합니다.
Q2. 룰렛에서 가중치는 어떻게 작동하나요?
룰렛 탭의 「⚖️ 가중치 조정」 토글을 켜면 각 항목 옆에 1~10 슬라이더가 나타납니다. 가중치가 큰 항목은 부채꼴 크기가 커지고, 회전 시 멈출 확률도 비례해 높아집니다. 토글을 끄면 모두 동일 확률(균등).
Q3. 명단 입력은 어떻게 하면 가장 빠른가요?
이름 한 개씩 Enter로 칩이 추가됩니다. 여러 이름을 한 번에 넣고 싶다면 "김민수, 이지은, 박서준"처럼 쉼표나 줄바꿈으로 구분해서 붙여넣으면 자동 분리됩니다. 템플릿 카드를 클릭하면 음식·이름·번호·옵션이 한 번에 채워집니다.
Q4. 팀 나누기는 어떻게 균형을 맞추나요?
① 명단 셔플 (Fisher-Yates 무작위), ② 리더 우선 배치 (지정 시), ③ 함께 묶을 그룹 처리 (가장 작은 팀에 통째로), ④ 나머지를 가장 작은 팀에 순환 배치, ⑤ 떨어뜨릴 그룹은 같은 그룹 멤버가 있는 팀 자동 회피. 결과는 좌우 2열로 한눈에 비교할 수 있게 표시.
Q5. 자리 배치 4×6에서 이름이 잘려요
본 도구는 열 수에 따라 폰트가 자동 조정됩니다 (열 2개 → 16px / 열 4개 → 14px / 열 6개 → 12px / 열 8개 이상 → 8~10px). 그래도 긴 이름은 일부 잘릴 수 있으니 셀에 마우스 올리면 툴팁으로 전체 이름을 확인할 수 있습니다.
Q6. 사다리타기와 룰렛 중 어느 쪽이 더 공정한가요?
사다리타기는 가로줄이 적으면 출발 위치 바로 아래 근처에 도착이 몰리는 통계적 편향이 있습니다 (Physica A 2006 분석 — 가로줄이 늘수록 서서히 균등에 접근). 반면 본 도구의 순서·팀 추첨은 Fisher-Yates 균등 셔플, 룰렛은 가중치에 비례한 확률로 직접 추첨하므로 사다리 같은 구조적 편향이 없습니다. 사다리를 쓴다면 가로줄을 넉넉히 추가하고 당첨 위치를 아무도 모르게 정하세요.
Q7. 룰렛 결과를 미리 조작할 수 있나요?
아닙니다. ① 가중치에 따라 결과 추첨 (Math.random), ② 결과 항목이 12시 방향에 멈추도록 회전 각도 계산, ③ 4초 회전 애니메이션. 회전은 결정된 결과를 시각화한 것이며, 사용자가 결과를 조작할 수 없습니다. 룰렛 돌리기 버튼을 다시 누르면 새 결과.
함께 쓰면 좋은 도구
참고 자료
- Fisher-Yates 셔플 O(n) 구현 원전 — R. Durstenfeld, “Algorithm 235: Random permutation”, Communications of the ACM 7(7), 1964
- 사다리(아미다쿠지) 통계 분석 — Y. Inoue, “Statistical analysis on Amida-kuji”, Physica A 369(2), 867–876, 2006
- Math.random() 의사난수·보안 경고, Crypto.getRandomValues() — MDN Web Docs, 2026-07 기준 (구체적 알고리즘은 ECMAScript가 규정하지 않고 자바스크립트 엔진 구현에 따름)
- 랜덤 비교자 셔플 편향 실사례 — R. Weir, “Doing the Microsoft Shuffle” (2010) · The Register 보도 (2010-03-09)
- 큰 수의 법칙 (Law of Large Numbers) — 베르누이 정리