이 도구가 자리를 정하는 방식
줄 수와 열 수(각 1~15)를 곱한 만큼의 좌석 칸이 만들어지고, 좌석 번호는 앞줄 왼쪽부터 오른쪽으로, 다음 줄로 이어서 1번부터 매겨집니다. 이름 목록을 입력하는 방법은 두 가지입니다. "입력 순서대로 배치"는 목록 순서 그대로 번호순으로 앉힙니다. "무작위로 섞어 배치"는 Fisher–Yates 방식으로 이름들을 임의의 좌석에 흩뿌립니다. 둘 다 이름 뒤에 @번호를 붙이면(예: 박민수@1) 그 좌석에 고정하고, 나머지 사람만 남은 좌석에 순서대로 또는 무작위로 배치합니다. 한 줄에 -만 쓰면 빈자리를 뜻합니다(순서 배치에서만 그 순번 좌석이 "빈자리"로 표시되고, 무작위 배치에서는 무시되며 이름을 받지 못한 좌석은 번호만 남습니다). 이름은 서버로 전송되지 않고 이 브라우저 안에서만 처리됩니다.
무작위 섞기의 원리와 한계
Fisher–Yates 섞기는 목록의 뒤쪽 칸부터 시작해, 그 칸 이하의 임의 위치와 교환하는 과정을 앞으로 반복합니다. 난수가 균등하면 가능한 모든 배열이 같은 확률로 나옵니다. 이 도구는 브라우저의Math.random()을 쓰는데, 이는 일반 용도의 난수 생성기이고 암호나 보안, 법적 효력이 필요한 추첨용이 아닙니다. 교실 자리 바꾸기나 모임 자리 정하기 용도에는 충분하지만, 상품 추첨처럼 공정성을 입증해야 하는 경우에는 참관인 앞에서 제비뽑기 등을 병행하세요. 또 "무작위"는 "모두가 만족스럽다"를 뜻하지 않으므로, 시력이나 청력 같은 개별 사정이 있는 학생은 @번호로 고정하세요.
경우의 수 표: n명을 n칸에 배치하는 방법
서로 다른 n명을 n개 좌석에 앉히는 방법은 n!가지입니다. 아래 표는 빌드 시 BigInt로 계산한 정확한 값입니다. 30명이면 자릿수가 33자리라 사실상 같은 배치가 두 번 나올 수 없으므로, 매달 완전 무작위로 바꾸면 이전 배치와 겹칠 걱정은 안 해도 됩니다. 다만 특정 두 학생이 가까이 앉는 일은 충분히 일어납니다.
| 인원 n | n! (배치 가능한 경우의 수) | 자릿수 |
|---|---|---|
| 5명 | 120 | 3자리 |
| 8명 | 40,320 | 5자리 |
| 10명 | 3,628,800 | 7자리 |
| 15명 | 1,307,674,368,000 | 13자리 |
| 20명 | 2,432,902,008,176,640,000 | 19자리 |
| 30명 | 265,252,859,812,191,058,636,308,480,000,000 | 33자리 |
일부를 고정하면 경우의 수가 크게 줄지만 여전히 큽니다. 30명 중 k명을 고정하면 나머지 (30 − k)명만 섞이므로 경우의 수는 (30 − k)!입니다.
| 고정 인원 k | 섞이는 인원 | 경우의 수 (30 − k)! |
|---|---|---|
| 0명 | 30명 | 265,252,859,812,191,058,636,308,480,000,000 |
| 3명 | 27명 | 10,888,869,450,418,352,160,768,000,000 |
| 5명 | 25명 | 15,511,210,043,330,985,984,000,000 |
| 10명 | 20명 | 2,432,902,008,176,640,000 |
| 20명 | 10명 | 3,628,800 |
자리를 바꿀 때 같은 자리가 걸릴 확률
완전 무작위로 다시 섞으면 일부 학생이 이전과 똑같은 자리를 받을 수 있습니다. 아무도 같은 자리를 받지 않을 확률은 Σ(−1)ᵏ/k! (k=0..n)로 계산하며, n이 커지면 1/e ≈ 36.79%에 가까워집니다. 아래 값은 빌드 시 계산했습니다. 즉 30명이 같은 자리 수만큼 섞으면 약 63%의 확률로 누군가 한 명 이상은 지난번과 같은 자리를 받습니다. "전원이 반드시 이동"해야 하는 규칙이라면 이 도구의 단순 섞기로는 보장되지 않으니, 결과를 보고 겹친 사람만 서로 바꾸세요.
| 인원 n | 아무도 같은 자리를 받지 않을 확률 |
|---|---|
| 2명 | 50.00% |
| 3명 | 33.33% |
| 5명 | 36.67% |
| 10명 | 36.79% |
| 30명 | 36.79% |
작성 예시 세 가지
예시 1. 중학교 교실, 30명 5줄×6열, 한 달에 한 번 자리 바꾸기
줄 5, 열 6으로 30석을 만들고 학급 번호순 명단을 붙여 넣은 뒤 시력 때문에 앞자리가 필요한 학생을 김하늘@2처럼 고정합니다. 무작위로 섞으면 한 명이 앞줄(6석)에 앉을 확률은 6/30 = 20%, 특정 좌석 하나에 앉을 확률은 1/30입니다. 고정한 학생이 있어도 나머지가 섞이는 방식은 같습니다. 결과가 마음에 들지 않으면 다시 섞기를 누르면 되지만, 계속 누르면 공정하지 않으니 "한 번 나온 결과를 채택"이라는 규칙을 학생들과 정하세요.
예시 2. 사내 세미나실, 12명 3줄×4열
발표자와 팀장을 앞줄에 고정하고 나머지는 무작위로 섞습니다. 12!은 479,001,600이므로 같은 배열이 반복될 일은 사실상 없습니다. 사전에 알려야 하는 행사라면 이름 목록을 입력한 순서 그대로 "입력 순서대로 배치"를 눌러 사전 배정표를 공유하는 편이 공정성 시비가 적습니다.
예시 3. 학원 모의고사 시험장, 4줄×6열에서 한 칸씩 띄워 앉기
응시생이 12명이라면 이름 한 줄, - 한 줄을 번갈아 입력하면 순서 배치에서 홀수 좌석에만 이름이, 짝수 좌석은 빈자리로 남습니다. 칸을 띄우는 간격과 감독 위치는 시험 규정에 따르세요. 이 도구는 좌석표만 그리며 부정행위 방지를 보장하지 않습니다.
배치 규격별 앞줄 확률과 로테이션 계획
좌석 수와 인원이 같고 완전 무작위로 섞는다면, 한 사람이 앞줄에 앉을 확률은 앞줄 좌석 수(=열 수)를 전체 좌석 수로 나눈 값, 곧 1/줄 수입니다. 줄이 많을수록 앞줄에 걸리는 확률은 낮아지므로 "한 학기에 한 번은 앞자리를 경험하게 하겠다" 같은 목표가 있다면 규격에 따라 필요한 횟수가 달라집니다. 아래 표는 각 규격에서 서로 독립적으로 여러 번 섞는다고 가정하고 계산한 값입니다.
| 규격 | 좌석 수 | 한 번에 앞줄일 확률 | 특정 좌석 하나 | 줄 수만큼 섞었을 때 한 번 이상 앞줄 | 10번 섞어도 한 번도 앞줄이 아닐 확률 |
|---|---|---|---|---|---|
| 3줄×4열 | 12석 | 33.3% | 8.33% | 70.4% | 1.7% |
| 4줄×6열 | 24석 | 25.0% | 4.17% | 68.4% | 5.6% |
| 5줄×6열 | 30석 | 20.0% | 3.33% | 67.2% | 10.7% |
| 6줄×5열 | 30석 | 16.7% | 3.33% | 66.5% | 16.2% |
| 7줄×5열 | 35석 | 14.3% | 2.86% | 66.0% | 21.4% |
5줄×6열이라면 한 번에 앞줄일 확률은 20.0%이고, 5번 섞었을 때 한 번 이상 앞줄이 될 확률은 67.2%뿐입니다. 즉 매달 완전 무작위로 바꾸면 5개월 뒤에도 약 32.8%의 학생은 앞줄을 한 번도 못 경험하고, 10번 섞어도 10.7%는 그렇습니다. 이는 오류가 아니라 독립 무작위의 성질입니다. 모든 학생이 줄별로 한 번씩 돌아가야 한다면 무작위 섞기가 아니라 로테이션(예: 매달 한 줄씩 뒤로 이동하고 맨 뒷줄은 앞줄로)을 손으로 짜야 하고, 이 도구에서는 그 결과 명단을 "입력 순서대로 배치"에 넣어 그리면 됩니다. 이 도구가 하는 일은 좌석표를 그리는 것까지이며, 공정한 순환 계획 자체를 계산해 주지는 않습니다.
시나리오: 고정 좌석이 다른 학생의 확률을 바꾼다
30명 5줄×6열 교실(앞줄 6석)에서 완전 무작위로 섞으면 한 명이 앞줄이 될 확률은 20.0%입니다. 시력 때문에 3명을 앞줄에 고정하면 나머지 27명이 27개 좌석에 섞이고 앞줄에 남은 자리는 3석뿐이라 이들의 앞줄 확률은 11.1%로 낮아집니다. 반대로 3명을 뒷줄에 고정하면 앞줄 6석을 27명이 나눠 가지므로 22.2%로 올라갑니다. 앞줄 6석을 모두 고정하면 나머지 24명이 앞줄이 될 확률은 0.0%입니다. 고정은 해당 학생을 배려하는 대신 나머지 학생의 확률을 조용히 바꾸므로, 고정 인원이 늘수록 "왜 나만 계속 뒤냐"는 불만이 생기기 쉽습니다. 고정은 꼭 필요한 최소 인원에 한정하고 이유를 공유하세요.
시나리오: 좌석보다 인원이 적을 때
30석 교실에 24명이 앉는다면 빈자리가 6석 생깁니다. "입력 순서대로 배치"는 앞줄부터 채우므로 빈자리가 뒷줄 끝으로 몰립니다. 반면 "무작위로 섞어 배치"는 빈 좌석을 포함한 30석 중 임의의 24석을 고르는 방식이라 한 좌석이 비어 있을 확률이 6/30 = 20%이고, 빈자리 6석이 정확히 맨 뒷줄 6석과 일치할 경우의 수는 전체 C(30, 6) = 593,775가지 중 1가지뿐입니다. 그래서 무작위 배치의 결과는 대체로 빈자리가 곳곳에 흩어진 모양이 됩니다. 뒷줄을 비워 두고 싶다면 무작위 배치 대신, 좌석 수를 인원에 맞춰 줄이거나, 순서 배치에서 - 줄을 원하는 순번에 넣어 빈자리를 직접 정하세요. 참고로 -@3처럼 쓰면 3번 좌석의 이름이 "-"라는 글자로 고정되고 빈자리로 해석되지 않습니다. 이 표기는 쓰지 않는 것이 좋습니다.
입력 줄 하나가 해석되는 순서
- 각 줄의 앞뒤 공백을 지운 뒤, 빈 줄은 버립니다.
- 줄 끝이 "공백 가능 + @ + 공백 가능 + 숫자"이고 @ 앞에 글자가 있으면 고정 좌석으로 해석합니다.
박민수 @ 1도박민수@1과 같습니다. 앞자리 0이 붙은@03은 3번으로 읽습니다. - 번호가 1~전체 좌석 수 밖이면 경고를 띄우고 이름만 일반 배치 대상으로 넘깁니다. 이미 다른 사람이 쓴 번호이면 뒤에 나온 사람이 일반 배치로 돌아갑니다. 즉 같은 번호를 두 명이 쓰면 먼저 적은 사람이 우선입니다.
- 일반 배치 대상은 입력 순서 모드에서 비어 있는 가장 앞 좌석부터 차례로 채우고, 무작위 모드에서는 고정되지 않은 좌석 번호들을 섞어 앞에서부터 이름을 하나씩 할당합니다.
- 무작위 모드에서 사람이 남는 좌석보다 많으면 입력 순서상 뒤의 사람이 잘려 나가며, 이 경우 잘려 나가는 사람은 무작위로 정해지지 않고 목록의 뒤쪽입니다. 인원이 좌석을 넘기지 않도록 줄·열을 먼저 맞추세요.
- 줄·열 값이 숫자가 아니거나 소수이면 내림해서 쓰고 1~15 밖의 값은 가장자리 값으로 맞춥니다. 최대 225석(15×15)입니다.
활용 단계 제안: 자리 바꾸기 운영 순서
- 명단을 한 줄에 한 명씩 정리합니다. 전학생이나 결석 예정자가 있다면 그 사실을 미리 반영하세요.
- 고정이 필요한 사람만 @번호를 붙입니다. 사유(시력, 청력, 이동 편의 등)는 이름과 같은 칸에 적지 마세요. 인쇄물에 그대로 나옵니다.
- 무작위로 섞은 결과를 한 번만 채택한다는 규칙을 먼저 공지합니다. 결과가 마음에 안 든다고 다시 섞는 행위는 이 표의 확률 전제를 깨뜨립니다.
- 화면과 인쇄물을 대조해 번호와 이름이 맞는지 확인하고, 칠판 방향(앞쪽) 표시가 교실 방향과 일치하는지도 봅니다. 화면은 뒤에서 칠판을 바라본 방향입니다.
- 이름이 포함된 인쇄물을 게시할 때는 학교나 단체의 개인정보 지침을 따르세요. 학생 실명을 외부에 공개하는 위치에 붙이지 않는 것이 안전합니다.
인쇄 팁
- 인쇄 창에서 A4 가로, 배율 100%를 권합니다. 이 페이지는 가로 방향을 기본값으로 지정해 두었습니다.
- 입력 영역은 인쇄물에 나오지 않고, 칠판 표시와 좌석 칸만 출력됩니다.
- 이름이 길어 줄바꿈이 심하면 열 수를 줄이거나 두 장으로 나누세요. 15열까지 만들 수 있지만 글자가 작아져 읽기 어렵습니다.
- 번호가 작게 표시되므로 고정 좌석 번호를 확인할 때 인쇄물과 화면을 대조할 수 있습니다.
흔한 실수와 한계
- 이름 수가 좌석 수보다 많음: 넘치는 이름은 배치에서 빠지고 경고가 표시됩니다. 줄·열을 늘리세요.
- @번호가 겹치거나 범위를 벗어남: 같은 번호를 두 명이 지정하면 먼저 쓴 사람만 고정되고 나머지는 일반 배치로 돌아가며 경고가 표시됩니다.
- 복도·통로 반영 불가: 실제 교실의 분단 통로나 짝꿍 책상 구조는 그리지 못합니다. 열 수를 통로 기준으로 나눠 인쇄하거나 통로 칸을 빈자리(-)로 쓰세요.
- 학생 간 관계 반영 불가: 친구·갈등 관계 같은 제약은 알지 못합니다. 결과를 보고 교사가 조정하세요.
- 이 도구는 입력을 저장하지 않습니다. 새로 고침하거나 탭을 닫으면 사라지고 다른 기기와 동기화되지 않으므로 인쇄나 PDF로 보관하세요.
자주 묻는 질문
줄과 열 중 어느 쪽이 교실 앞쪽인가요?
배치도 맨 위에 "칠판 / 앞쪽" 표시가 있고, 그 아래 첫 줄이 앞줄입니다. 각 줄 안에서는 왼쪽부터 오른쪽 순서로 좌석 번호가 매겨지며, 화면은 교실 뒤에서 칠판을 바라본 방향입니다.
특정 학생만 자리를 지정하고 다른 학생은 무작위로 배치할 수 있나요?
네. 이름 뒤에 @와 좌석 번호를 붙여(예: 이영희@4) 고정하고 "무작위로 섞어 배치"를 누르면 나머지만 남은 좌석에 섞입니다.
무작위 결과를 추첨의 근거로 써도 되나요?
교실 자리 정하기 같은 일상 용도는 충분하지만, Math.random()은 보안용 난수가 아니고 결과를 기록으로 남기지 않습니다. 이해관계가 큰 추첨은 별도의 공정한 절차를 따르세요.
빈자리는 어떻게 표시하나요?
이름 목록의 한 줄에 하이픈(-)만 적으면 순서 배치에서 그 순번 좌석이 빈자리 칸으로 표시되고 번호도 함께 보입니다. 무작위 배치에서는 한 줄짜리 -가 무시되고, 이름을 받지 못한 좌석은 번호만 표시된 채 남습니다.
이름에 특수문자나 HTML 태그를 넣어도 되나요?
입력한 이름은 화면에 그릴 때 이스케이프하므로 꺾쇠나 따옴표 같은 문자도 글자 그대로 표시됩니다. 다만 @는 고정 좌석 구분자이므로 이름 끝에 @숫자가 있으면 번호로 해석됩니다.
이름이 좌석 수보다 적으면 남는 좌석은 어떻게 되나요?
이름을 받지 못한 좌석은 번호만 표시된 채 남습니다. 순서 배치에서는 뒤쪽 좌석이, 무작위 배치에서는 임의의 좌석이 비게 됩니다. 의도한 위치를 빈자리로 만들려면 순서 배치에서 해당 순번에 - 줄을 넣으세요.
"-@3"처럼 쓰면 3번이 빈자리가 되나요?
아니요. 이 표기는 3번 좌석에 "-"라는 이름을 고정하는 것으로 처리되어 빈자리 표시(옅은 "빈자리" 칸)가 되지 않습니다. 빈자리는 순서 배치에서 한 줄에 -만 적는 방식으로 지정합니다.
결과 화면을 이미지나 PDF로 저장하려면 어떻게 하나요?
이 도구에는 이미지 저장 버튼이 없습니다. "인쇄하기"를 누른 뒤 프린터 대신 브라우저의 PDF 저장 기능을 선택하면 좌석 칸만 담긴 PDF를 만들 수 있습니다. 용지 방향은 가로, 배율은 100%를 권합니다.
동명이인이 있으면 어떻게 하나요?
도구는 이름이 같아도 별개의 줄로 취급해 각각 좌석을 줍니다. 다만 고정 좌석 번호가 서로 다르면 문제없지만, 칸에서 구분이 안 되니 "김민수(1)", "김민수(2)"처럼 구분용 표기를 이름에 직접 붙이세요.
함께 보면 좋은 도구
경우의 수와 확률 표는 수학적 계산값이며 실제 좌석 배정의 만족도를 뜻하지 않습니다.