Text Shuffler
Select a shuffle mode and randomize your text.
📖 Array.sort(Math.random)이 왜 편향된 셔플인가 가이드 보기
텍스트 셔플 도구란?
텍스트 셔플 도구는 텍스트의 줄, 단어, 문자를 무작위로 섞어주는 온라인 도구입니다. 세 모드(줄·단어·문자) 모두 동일한 Fisher-Yates(Knuth) 셔플 함수를 사용해 편향 없이 균등한 무작위 순서를 생성합니다 — Array.sort(() => Math.random() - 0.5) 같은 흔한 방식은 정렬 알고리즘이 비교 함수의 일관성을 전제로 동작하기 때문에 원래 순서 쪽으로 크게 편향되는 문제가 있어(직접 30만 회 시뮬레이션 결과 원래 순서가 나올 확률이 균등 분포의 2배 이상으로 나타남) 이 도구는 사용하지 않습니다. 퀴즈 출제, 랜덤 순서 결정, 데이터 샘플링 등에 활용할 수 있습니다.
여러 번 셔플할 수 있나요?
네. 셔플 버튼을 클릭할 때마다 새로운 무작위 순서로 섞입니다.
원본 텍스트는 변경되나요?
아니요. 원본 입력창은 그대로이며, 결과는 출력창에만 표시됩니다.
어떤 셔플 알고리즘을 사용하나요?
줄 셔플, 단어 셔플, 문자 셔플 세 모드 모두 동일한 Fisher-Yates(Knuth) 셔플 알고리즘을 사용합니다. 완전히 균등한 무작위 순서를 보장합니다.
비어있는 줄도 섞이나요?
네. 빈 줄도 하나의 줄로 처리되어 함께 섞입니다. 빈 줄이 걱정된다면 먼저 빈 줄 제거 도구를 사용하세요.
데이터가 서버로 전송되나요?
아니요. 모든 셔플 처리는 브라우저 내에서만 이루어집니다. 데이터는 어디에도 전송되지 않습니다.
줄 단위가 아닌 단어 단위로 섞을 수 있나요?
단어 단위 셔플 옵션을 선택하면 각 줄의 단어들을 무작위로 섞습니다. 예: "apple banana cherry" → "cherry apple banana". 어휘 연습이나 무작위 순서 생성에 유용합니다.
섞은 후 원본 텍스트를 복원할 수 있나요?
한 번 섞으면 원본 순서로 자동 복원은 불가합니다. 원본을 유지해야 한다면 섞기 전에 텍스트를 따로 복사해 두세요. 실행 취소(Undo) 기능을 지원하는 경우 Ctrl+Z로 이전 상태로 돌아갈 수 있습니다.
Fisher-Yates(Knuth) 셔플 알고리즘이란?
배열 끝에서부터 시작해 아직 처리하지 않은 범위 안에서 무작위로 고른 요소와 현재 위치를 교환해 나가는 방식으로, 모든 순열이 정확히 같은 확률로 나오는 것이 수학적으로 증명된 알고리즘입니다. 반면 sort()의 비교 함수에 Math.random()을 넣는 방식은 정렬 알고리즘 내부의 비교 횟수·순서가 브라우저 엔진마다 다르고 무작위 비교 함수라는 전제 자체가 정렬 알고리즘 설계와 맞지 않아, 특정 순서(주로 원본 순서)가 다른 순서보다 훨씬 자주 나오는 편향이 생깁니다.