줄・단어 섞기 도구
붙여넣은 목록의 줄이나 단어를 무작위로 섞습니다 — 암호학적으로 안전한 난수 사용, 클릭 한 번으로 매번 새로운 순서.
조회수 1,160회
작동 원리
목록(한 줄에 항목 하나씩)이나 텍스트 블록을 붙여넣고 줄 단위 또는 단어 단위로 섞을지 선택하면, 이 도구는 crypto.getRandomValues로 시드를 얻는 Fisher-Yates 셔플을 실행합니다 — 이 사이트의 주사위 굴리기, 난수 생성기, 경품 추첨 도구가 사용하는 것과 동일한 암호학적으로 강력한 난수 소스이며, 모듈로 편향 회피 방식도 동일합니다. Fisher-Yates는 마지막 항목부터 거꾸로 진행합니다: 각 위치마다 아직 섞이지 않은 나머지 항목 중에서 무작위 인덱스를 골라 그 자리와 맞바꾸므로, 목록의 가능한 모든 순서가 동일한 확률을 가지며 어떤 위치도 편향되지 않습니다.
편향 회피에 대한 이 세부 사항은 들리는 것보다 훨씬 중요합니다. Math.random() * n으로 생성한 순진한 무작위 인덱스, 혹은 더 나쁘게는 % n으로 축소한 암호학적 무작위 정수는, n이 생성기의 범위를 정확히 나누어떨어지게 하지 않을 때 완벽하게 균일하지 않습니다 — 특정 위치가 다른 위치보다 아주 약간 더 자주 나옵니다. 몇 번 섞는 정도로는 아무도 눈치채지 못하겠지만, 하루에 수천 번 셔플을 실행하는 퀴즈 플랫폼에서는 문제 순서나 경품 응모 순서의 미세한 편향이 실질적인 공정성 문제가 됩니다. 이 도구는 범위를 벗어난 값을 모듈로로 축소하는 대신 버리고 다시 뽑으므로, 목록 길이와 무관하게 모든 셔플이 편향 없이 유지됩니다.
이는 이 사이트의 주사위 굴리기 및 난수 도구를 움직이는 것과 정확히 같은 셔플 원리이며, 단지 하나의 숫자 대신 줄이나 단어의 배열에 적용될 뿐입니다: 아직 섞이지 않은 나머지 항목 중에서 균등하게 하나를 골라 배치하고, 아무것도 남지 않을 때까지 반복합니다. 입력의 모든 순열이 동일하게 도달 가능하다는 이 보장이야말로, 겉보기에만 뒤섞인 것처럼 보이면서 은근히 특정 배열을 편애하는 셔플과 공정성 등급의 셔플을 가르는 기준입니다.
알아두어야 할 사항
- 줄 모드는 각 줄을 섞을 하나의 단위로 취급합니다 — 이름 목록, 읽기 순서, 퀴즈 문제 집합을 무작위화하는 데 이상적입니다.
- 단어 모드는 공백을 기준으로 나누고 단어를 섞은 뒤 다시 합칩니다 — 하나의 문장이나 짧은 구절을 뒤섞는 데 적합합니다.
- 진짜 무작위이지, 무작위처럼 보이기만 하는 것이 아닙니다: 여기서 사용하는 암호 소스는 대부분의 언어에 내장된 더 약한 기본 난수 함수가 아니라, 암호화 키에 사용되는 것과 같은 등급의 무작위성입니다.
- 아무것도 저장되지 않습니다: 셔플은 전적으로 브라우저 안에서 실행되며 클릭할 때마다 새롭고 독립적인 순서를 만들어냅니다 — 새로고침하면 같은 결과가 아니라 다른 결과가 나옵니다.
자주 묻는 질문
섞기가 정말로 무작위인가요?
네 — Math.random()이 아니라 crypto.getRandomValues로 구동되는 편향 없는 Fisher-Yates 셔플을 사용하므로, 모든 순서가 동일한 확률을 가집니다.
한 문장 안의 단어를 섞을 수 있나요?
네 — 단어 모드로 전환하면 공백을 기준으로 나누고 섞은 다음 다시 합칩니다.
왜 그냥 Math.random()을 사용하지 않나요?
Math.random()은 공정성이 중요한 선택이 아니라 그래픽과 애니메이션을 위해 만들어진 빠른 유사 난수 생성기이며, 그 출력을 모듈로로 순진하게 범위에 맞추면 작은 통계적 편향이 생깁니다. crypto.getRandomValues는 바로 이런 종류의 편향 없는 무작위 선택을 위해 만들어진 암호학적으로 강력한 소스입니다.
이 도구는 실제로 어떤 작업에 유용한가요?
퀴즈나 시험 문제 순서를 무작위화하거나, 무작위 작업 배정이나 좌석 배치 전에 이름을 섞거나, 추첨 전에 경품 응모 목록을 뒤섞거나, 읽기 목록을 매번 새로운 순서로 재구성하는 데 유용합니다.
같은 목록을 두 번 섞으면 같은 순서가 나오나요?
아니요 — 각 셔플은 새로운 무작위 값을 뽑으므로, 동일한 입력에 대해 두 번 실행해도 서로 독립적이고 대체로 다른 순서가 나옵니다. 마치 실제 카드 덱을 두 번 섞는 것과 같습니다.
비슷한 도구
문제 신고하기
줄・단어 섞기 도구
댓글
아직 댓글이 없습니다 — 첫 댓글을 남겨보세요!