사다리타기
참가자와 결과를 한 줄에 하나씩 넣고 추첨하면 사다리가 그려집니다. 결과는 화면에 나온 순서 그대로 서버를 거치지 않고 브라우저에서 계산합니다.
바로 답
참가자 2~30명이면 브라우저에서 바로 사다리타기를 할 수 있고, 결과는 서버로 전송되지 않습니다.
근거: 이 페이지는 참가자 순서를 crypto.getRandomValues 기반 Fisher–Yates로 섞은 뒤, 그 결과와 일치하도록 사다리 가로줄을 배치합니다. 흔한 방식(가로줄을 무작위로 그린 뒤 결과를 읽는 방식)은 5명 기준 120개 배열 중 34개만 나왔습니다(측정값).
사다리타기 실행
참가자와 결과를 확인하고 ‘사다리 그리기’를 누르세요. 같은 화면에서 다시 누르면 새로 뽑습니다.
| 참가자 | 결과 |
|---|
결과를 먼저 뽑고 사다리를 그리는 이유
사다리타기의 결과는 가로줄 위치가 정합니다. 그런데 가로줄을 칸 사이에 무작위로 흩뿌리는 구현은 모든 배열이 같은 확률로 나오지 않습니다. 인원이 5명일 때 120가지 배열 중 실제로 나오는 배열은 34가지뿐이고, 가장 자주 나오는 배열은 균등 기대값의 7.6배였습니다(20만 회 시뮬레이션).
이 페이지는 순서를 뒤집습니다. ① 결과 배열을 Fisher–Yates로 균등하게 뽑고 ② 그 배열이 나오도록 가로줄을 배치합니다. 그림은 여전히 사다리이고, 참가자마다 확률은 정확히 같습니다. 자세한 측정 방법과 브라우저에서 직접 돌려보는 시뮬레이터는 추첨 공정성에 있습니다.
인원별 화면 구성
데스크톱에서 그림 폭 760px(여백 40px씩)을 기준으로 계산한 값입니다. 화면이 좁으면 그림과 글자 크기가 화면 폭에 맞춰 줄어들고, 인원이 늘수록 칸이 좁아져 이름은 잘려 보입니다. 정확한 대응은 아래 결과 표에서 확인하세요.
표가 잘려 보이면 좌우로 넘겨 전체 열을 확인하세요.
| 참가 인원 | 칸 사이 간격(px) | 그림에 보이는 이름 | 권장 용도 |
|---|---|---|---|
| 5 | 170 | 전체 이름 | 소규모 모임 자리 |
| 8 | 97 | 앞 4자 | 팀 회식 자리 |
| 10 | 76 | 앞 3자 | 학급 조 편성 |
| 15 | 49 | 앞 2자 | 행사 진행 순서 |
| 20 | 36 | 번호만 | 단체 청소 구역 |
| 30 | 23 | 번호만 | 전원 배정(그림보다 표 권장) |
계산 규칙과 한계
- 1:1 대응 — 참가자 수와 결과 수가 같아야 실행됩니다. 다르면 안내 문구가 뜨고 그림을 그리지 않습니다.
- 난수 —
crypto.getRandomValues로 32비트 값을 뽑아 편향 없이 섞습니다. 실행할 때마다 결과가 달라집니다. - 재현 링크 — 결과를 주소의
#뒤에 담습니다.#뒤 값은 서버로 전송되지 않고, 링크를 열면 같은 그림이 다시 그려집니다. - 이미지 저장 — 브라우저가 만든 PNG를 내려받는 방식이라 서버 업로드가 없습니다. 세로로 긴 사다리는 이미지도 길게 저장됩니다.
- 빈 줄 — 앞뒤 공백과 빈 줄은 무시합니다. 같은 이름이 두 번 들어가면 구분이 어려우므로 ‘민지’, ‘민지2’처럼 구분해 주세요.
- 결과의 성격 — 이 도구는 행사·자리 배정용이며, 상품이나 금전이 걸린 추첨의 공정성 보증 수단이 아닙니다.
자주 묻는 질문
사다리타기는 정말 공평한가요?
결과를 먼저 균등 추첨하는 구현은 참가자마다 확률이 같습니다. 반면 가로줄을 무작위로 그리는 구현은 인원이 늘수록 특정 배열이 자주 나옵니다. 이 페이지는 전자입니다. 측정값은 추첨 공정성에 표로 정리했습니다.
결과를 이미지로 저장할 수 있나요?
‘이미지로 저장(PNG)’을 누르면 사다리 그림이 PNG 파일로 내려받아집니다. 그림 폭은 760px 기준이며, 인원이 많으면 세로로 길어집니다.
같은 결과를 다시 보고 싶습니다.
‘재현 링크 복사’를 누르면 결과가 담긴 주소가 복사됩니다. 그 주소를 열면 같은 사다리가 그려집니다. 새로 뽑으려면 ‘사다리 그리기’를 다시 누르세요.
참가자 수와 결과 수가 다르면 어떻게 되나요?
1:1 대응이 원칙이라 실행되지 않고 안내가 표시됩니다. 결과 칸의 줄 수를 참가자 수와 같게 맞춘 뒤 다시 실행하세요.