CodeKitHub
생성기 도구

무작위 문자 생성기

마지막 업데이트:

눈을 감고 알파벳을 손가락으로 짚거나 친구에게 아무 문자나 말해달라고 하는 식으로 손으로 문자를 "무작위로" 고르는 것은 편향되지 않기가 매우 어렵다는 점에서 악명이 높습니다. 사람들은 우연히 예상되는 것보다 훨씬 더 특정 문자를 선호하는 경향이 있습니다. 이 도구는 필요한 만큼의 무작위 문자를 대문자, 소문자, 혼합 형태로 생성하며, 중복을 허용하지 않는 옵션도 제공합니다. 이 사이트의 비밀번호 생성기와 동일한 암호학적으로 안전한 난수 소스(crypto.getRandomValues())를 사용하며, 많은 유사 도구가 조용히 사용하는 더 약한 Math.random()이 아닙니다.

결과

이 도구는 무엇인가요?

무작위 문자 생성기는 26개의 영문 알파벳에서 하나 이상의 문자를 선택하되, 매번 모든 문자가 동일하고 편향되지 않은 확률로 선택되도록 하는 도구입니다. 그 무작위성의 품질은 전적으로 그 뒤에 있는 난수 소스에 달려 있습니다. JavaScript의 `Math.random()`을 사용하는 단순한 구현은 예측에 저항하도록 설계되지 않은 의사난수 생성기인 반면, W3C Web Cryptography API에 정의된 `crypto.getRandomValues()`는 운영체제의 암호학적으로 안전한 난수 소스에 의해 뒷받침됩니다.

이 도구는 생성하는 모든 문자에 `crypto.getRandomValues()`를 사용하며, 이는 이 사이트의 [비밀번호 생성기](/password-generator/)와 동일한 방식입니다. 문자 하나를 고르는 것처럼 단순한 작업에서도 이 차이가 왜 중요한지는 [인기 있는 도구들이 실제로 안전한 난수 소스를 사용하는지 검증한 비교 글](/blog/online-password-generators-math-random-vs-crypto/)을 참고하세요.

"중복 없음" 옵션은 사용 가능한 문자 풀에 대해 Fisher–Yates 방식의 셔플을 수행하고 비복원 추출을 하여, 결과의 모든 문자가 서로 다르도록 보장합니다. 고유한 한 글자 코드를 부여하는 경우처럼 문자가 중복되면 문제가 되는 상황에 유용합니다.

왜 사용해야 할까요?

  • 교실 활동, 게임(무작위 문자를 활용한 아이스브레이크나 단어 게임 등), 추첨을 위해 공정하게 문자를 선택합니다.
  • 실수로 중복되지 않는 고유한 한 글자 식별자나 코드를 생성합니다.
  • 사람의 무의식적인 문자 선호에 의존하지 않고 진정으로 편향되지 않은 무작위 문자를 얻습니다.
  • 용도에 따라 대문자, 소문자, 혼합 중에서 선택합니다.
  • 100% 로컬이며 암호학적으로 무작위: 모든 과정이 crypto.getRandomValues()를 사용해 브라우저에서 실행되며, 서버로 아무것도 전송되지 않습니다.

사용 방법

  1. 원하는 문자 개수를 설정합니다(1~100).
  2. 대문자, 소문자, 혼합 중 케이스를 선택합니다.
  3. 결과의 모든 문자가 서로 달라야 한다면 "중복 없음"을 켭니다.
  4. "생성"을 클릭해 결과를 만든 다음, "복사"를 클릭해 문자를 클립보드에 복사합니다.

예시

입력

개수: 5, 케이스: 대문자, 중복 없음: 켜짐

결과

Q, F, B, X, M

실행할 때마다 다른 무작위 결과가 생성됩니다 — 이는 "중복 없음" 옵션이 켜진 상태의 예시 출력일 뿐이며, 다섯 문자 모두 서로 다름이 보장됩니다.

문자 선택에서의 Math.random() vs. crypto.getRandomValues()

가벼운 게임에서는 그 차이가 눈에 보이지 않습니다. 예측 가능성이 실제로 중요한 경우라면 이야기가 다릅니다.

속성Math.random()crypto.getRandomValues()
설계 목표속도와 통계적 분포예측 불가능성, 예측에 대한 저항성
보안이 중요한 용도에 적합아니요 — MDN 공식 문서에서도 직접 그렇게 명시함예 — OS의 CSPRNG에 의해 뒷받침됨
이 도구에서의 사용 여부사용 안 함사용함, 생성되는 모든 문자에 대해

관련 도구

다른 무작위 생성기가 필요하다면 다음 도구를 사용해 보세요.

무작위 숫자 생성기 · 비밀번호 생성기 · 판타지 이름 생성기

자주 묻는 질문

이게 정말 무작위인가요, 아니면 그냥 Math.random()인가요?

운영체제에 의해 뒷받침되는 Web Cryptography API의 암호학적으로 안전한 난수 소스인 crypto.getRandomValues()를 사용합니다 — 많은 유사 도구가 밝히지 않고 사용하는 더 약한 의사난수 생성기 Math.random()이 아닙니다. 인기 있는 생성기 도구들이 실제로 안전한 난수 소스를 사용하는지 검증한 비교 글도 참고해 보세요.

"중복 없음"은 무엇을 하나요?

이를 활성화하면 도구는 사용 가능한 풀(단일 케이스는 26자, 혼합 케이스는 52자)에서 비복원으로 문자를 뽑기 때문에, 결과의 모든 문자가 다른 모든 문자와 서로 다름이 보장됩니다. 비활성화하면 각 문자가 독립적으로 선택되어 주사위를 여러 번 굴리는 것처럼 중복이 발생할 수 있습니다.

생성할 수 있는 고유 문자의 최대 개수는 얼마인가요?

대문자 전용 또는 소문자 전용 모드에서는 26개, 혼합 케이스에서는 52개입니다(같은 문자의 대문자와 소문자 버전이 서로 다른 결과로 취급되기 때문입니다). "중복 없음"을 켠 상태에서 그보다 많이 요청하면 개수는 풀 크기로 제한됩니다.

같은 문자가 대문자와 소문자로 모두 나타나는 혼합 케이스 문자를 생성할 수 있나요?

네 — "중복 없음"을 끈 혼합 케이스 모드에서는 각 문자가 독립적으로 생성되기 때문에 같은 결과에 "A"와 "a"가 둘 다 나타나는 것을 막지 않습니다. "중복 없음"을 켜고 혼합 케이스를 선택하면 이 둘은 별개의 풀 항목으로 취급되어 여전히 둘 다 나타날 수 있지만, 각각 한 번씩만 나타납니다.

이 도구의 사용 내역이 추적되거나 어딘가로 전송되나요?

아니요. 모든 무작위 생성은 Web Cryptography API를 사용해 전적으로 브라우저 내에서 클라이언트 측으로 이루어집니다. 아무것도 업로드되거나 기록되지 않습니다.

관련 도구