같은 문제라도 앞에 나오면 쉽게 느껴지고 뒤에 나오면 어렵게 느껴지는 경우가 있습니다. 순서가 난이도 체감에 영향을 주기 때문입니다. 이 글은 퀴즈 문제나 참가자의 순서를 무작위로 섞어 이 편향을 줄이는 방법과, 그 과정에서 흔히 저지르는 실수를 정리합니다.
순서 편향이 왜 생기는가
사람은 앞부분에 더 집중하고 뒷부분에서 피로해집니다. 그래서 어려운 문제가 항상 앞이나 뒤에 몰리면 특정 참가자에게 유불리가 생깁니다. 순서를 무작위로 섞으면 이 몰림이 사라져, 어떤 문제가 어느 자리에 오든 예측할 수 없게 됩니다. 순서를 정하는 감각을 잡으려면 온라인 룰렛 바로 쓰기 화면에서 후보를 몇 개 넣고 하나씩 뽑아 보면 됩니다.
섞기와 하나씩 뽑기의 차이
순서를 정하는 방법은 크게 두 가지입니다. 하나는 전체 목록을 한 번에 섞어 새 순서를 만드는 방식이고, 다른 하나는 룰렛으로 한 번에 하나씩 뽑아 나온 순서대로 배치하는 방식입니다. 전체를 고르게 섞을 때는 팀 배정 도구의 섞기가 편한데, 이는 피셔–예이츠 방식으로 각 순열이 같은 확률을 갖도록 만듭니다. 원리는 Wikipedia: Fisher–Yates shuffle 문서에 있습니다. 참고로 목록을 정렬 비교로 섞는 방식은 편향이 생길 수 있어 권장되지 않으며, 그 이유는 MDN: Array.prototype.sort() 문서에서 확인할 수 있습니다.
룰렛으로 하나씩 뽑을 때
문제 번호를 후보로 넣고 하나씩 뽑아 순서를 만들 수도 있습니다. 문제가 열 개라면 첫 순서로 뽑힐 확률은 각 10%로 같습니다. 다만 이 도구는 한 번 뽑힌 항목을 손대지 않고 그대로 두므로, 뽑힌 번호를 목록에서 직접 지운 뒤 다음을 뽑아야 순서가 겹치지 않습니다. 번호만 다루면 되므로 랜덤 숫자 추첨 도구로 번호를 뽑아 순서를 적어 나가는 방법도 있습니다.
- 문제 번호를 후보에 넣습니다.
- 하나 뽑아 첫 순서로 적습니다.
- 뽑힌 번호를 목록에서 지웁니다.
- 목록이 빌 때까지 반복하면 전체 순서가 완성됩니다.
한 번 정한 순서는 다시 바뀌지 않게
순서를 정한 뒤 마음에 안 든다고 다시 섞으면, 원하는 그림이 나올 때까지 반복한 셈이 되어 공정성이 흔들립니다. 섞기는 한 번만 하고 그 결과를 그대로 쓰는 것이 원칙입니다. 정한 순서는 결과 텍스트로 복사해 두면 나중에 '순서를 임의로 바꿨다'는 오해를 막을 수 있습니다. 참가자가 있는 자리라면 섞는 장면을 함께 보게 하는 것도 좋은 방법입니다.
재현이 안 된다는 점 이해하기
이 도구에는 시드를 지정해 같은 순서를 다시 만드는 기능이 없습니다. 그래서 한 번 섞은 순서를 그대로 재현하려면 그 결과를 기록해 두는 방법밖에 없습니다. 무작위 순서의 목적은 '재현'이 아니라 '예측 불가'이므로, 대부분의 퀴즈에서는 재현이 필요하지 않습니다. 정한 순서를 텍스트로 남겨 두면 나중에 참고 자료로 충분합니다.
흔한 실수
첫째, 뽑은 번호를 지우지 않고 다시 뽑아 같은 문제가 두 번 배치되는 경우입니다. 하나씩 뽑을 때는 반드시 지운 뒤 다음을 뽑아야 합니다. 둘째, 순서를 여러 번 다시 섞어 공정성이 흐려지는 경우입니다. 셋째, 섞은 순서를 기록하지 않아 나중에 어떤 순서였는지 알 수 없게 되는 경우입니다.
정리
퀴즈 순서 랜덤은 난이도 편향을 없애는 간단하고 효과적인 방법입니다. 전체를 고르게 섞을 때는 섞기 도구를, 하나씩 순서를 만들 때는 룰렛이나 번호 추첨을 쓰되, 뽑힌 항목을 손으로 지우는 규칙과 한 번 정한 순서를 유지하는 규칙만 지키면 됩니다. 정한 순서를 텍스트로 남겨 두면 재현 기능이 없어도 충분히 관리할 수 있습니다.
참가자 발표 순서에도 같은 원리
문제뿐 아니라 참가자의 발표나 답변 순서에도 같은 방법을 씁니다. 다섯 명이 발표한다면 각자가 첫 순서를 맡을 확률은 20%로 같습니다. 순서를 미리 공개하지 않고 그 자리에서 뽑으면, 누가 유리한 자리를 미리 알고 준비하는 일이 없어 공정합니다. 순서를 정하는 흐름 자체는 가벼운 결정에도 그대로 적용되므로, 점심 메뉴 룰렛에서 하나를 뽑아 본 경험이 있다면 어렵지 않게 응용할 수 있습니다.
순서 개수에 따른 확률 표
순서를 하나씩 뽑을 때 첫 자리에 올 확률은 후보 개수에 따라 달라집니다. 아래 표는 개수별 첫 순서 확률을 정리한 것으로, 개수만 세면 그대로 검산됩니다. 하나를 뽑아 지우면 다음 자리의 확률은 남은 개수 기준으로 다시 계산됩니다.
| 남은 개수 | 다음 자리에 뽑힐 확률 |
|---|---|
| 10개 | 10% |
| 5개 | 20% |
| 4개 | 25% |
| 2개 | 50% |
표에서 보듯 뽑을 때마다 지우면 남은 후보가 줄어 확률이 올라갑니다. 이 과정을 참가자가 지켜보면 순서가 조작되지 않았다는 것을 스스로 확인할 수 있습니다.
온라인 퀴즈에서 순서를 공유하는 법
온라인으로 퀴즈를 진행할 때는 진행자가 순서를 정해 화면이나 채팅으로 공유해야 합니다. 각 참가자가 자기 기기에서 섞으면 순서가 제각각 나오기 때문입니다. 진행자가 한 번 정한 순서를 결과 텍스트로 복사해 공지하면 모두가 같은 순서를 따릅니다. 이때 순서를 정한 시각을 함께 적어 두면, 나중에 순서를 임의로 바꿨다는 오해를 막을 수 있습니다. 접근성을 위해 화면 회전이 부담스러운 참가자가 있다면 기기의 움직임 줄이기 설정으로 회전을 짧게 할 수 있는데, 그 취지는 W3C WAI: Animation from Interactions 문서에 정리되어 있습니다.
공정한 순서가 주는 효과
순서를 무작위로 정하면 '왜 저 사람이 먼저냐'는 불만이 사라집니다. 준비 시간이 같아지고, 어려운 문제가 특정 자리에 몰리지 않아 결과가 실력에 더 가까워집니다. 무엇보다 순서를 정하는 방식이 투명하면 참가자가 결과를 신뢰합니다. 도구는 순서를 고르게 섞어 주지만, 그 순서를 지키고 기록으로 남기는 것은 진행자의 몫이라는 점만 기억하면 됩니다.
문제 은행을 돌려 쓸 때
같은 문제 은행을 여러 회차에 나눠 쓴다면 매번 새로 섞어야 순서 편향이 쌓이지 않습니다. 지난 회차의 순서를 그대로 다시 쓰면 특정 문제가 늘 앞이나 뒤에 놓입니다. 회차마다 순서를 새로 만들고 그 결과를 텍스트로 남겨 두면, 어떤 순서로 진행했는지 나중에 확인할 수 있습니다. 이 도구는 시드를 지정해 같은 순서를 다시 만드는 기능이 없으므로, 순서 기록은 사용자가 직접 남겨야 합니다.
난이도를 섞을지 순서만 섞을지
순서를 무작위로 하면 난이도가 들쭉날쭉해질 수 있습니다. 어려운 문제가 연달아 나오면 참가자가 지치기 쉽습니다. 그래서 완전한 무작위 대신, 난이도별로 묶은 뒤 각 묶음 안에서만 순서를 섞는 방법도 있습니다. 예를 들어 쉬운 문제 다섯 개를 앞 묶음으로, 어려운 문제 다섯 개를 뒤 묶음으로 두고 각 묶음 안에서 섞으면, 전체 난이도 흐름은 유지하면서 세부 순서의 예측은 막을 수 있습니다. 목적에 따라 무작위의 범위를 정하면 됩니다.
정렬 기능으로 섞지 말아야 하는 이유
간단해 보인다고 목록을 정렬 기능의 비교 결과로 섞으면 편향이 생길 수 있습니다. 특정 자리가 더 자주 나오게 될 수 있어, 겉보기에는 섞인 것 같아도 진짜 무작위가 아닙니다. 이 문제는 MDN: Array.prototype.sort() 문서에서 설명하는 비교 함수의 성질과 관련이 있습니다. 그래서 순서를 섞을 때는 균등하게 섞는 방식을 쓰는 편이 안전합니다. 도구가 제공하는 섞기를 그대로 쓰면 이 걱정을 덜 수 있습니다.