JavaScript에서 무작위 문자와 숫자 생성하기
JavaScript에서 숫자와 영문 대소문자가 섞인 무작위 문자열을 만들고 싶다면 Math.random() 메서드를 활용하면 간단하게 구현할 수 있습니다. 이번 글에서는 원하는 길이만큼 랜덤 문자열을 생성하는 함수를 단계별로 살펴보겠습니다.
1단계: 사용할 문자 집합 정의
먼저 랜덤 생성에 사용할 문자와 숫자들을 하나의 문자열로 저장합니다.
var storedCharacters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
위 문자열에는 숫자(0~9), 소문자(a~z), 대문자(A~Z)가 모두 포함되어 있어 총 62개의 문자 중에서 무작위로 선택하게 됩니다.
2단계: 랜덤 문자열 생성 함수 작성
다음으로 Math.random()과 charAt() 메서드를 조합하여 원하는 길이의 랜덤 문자열을 생성하는 함수를 작성합니다.
예제 코드
function generateRandom3Characters(size) {
var generatedOutput = '';
var storedCharacters =
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
var totalCharacterSize = storedCharacters.length;
for ( var index = 0; index < size; index++ ) {
generatedOutput += storedCharacters.charAt(Math.floor(Math.random() *
totalCharacterSize));
}
return generatedOutput;
}
console.log(generateRandom3Characters(3));코드 동작 원리:
storedCharacters.length로 전체 문자 개수(62)를 구합니다.Math.random()은 0 이상 1 미만의 난수를 반환하므로, 여기에 전체 문자 수를 곱하고Math.floor()로 정수화하면 유효한 인덱스 범위 내의 값이 나옵니다.charAt()으로 해당 인덱스의 문자를 추출하여 결과 문자열에 이어 붙입니다.- 반복문이 매개변수
size로 지정한 횟수만큼 실행되며, 최종적으로 그 길이의 랜덤 문자열이 반환됩니다.
3단계: 프로그램 실행하기
Node.js 환경에서 위 프로그램을 실행하려면 다음 명령어를 사용합니다.
node fileName.js
실행 결과
여기서는 파일 이름을 demo136.js로 지정했습니다. 실행하면 아래와 같은 출력 결과를 확인할 수 있습니다.
PS C:\Users\Amit\JavaScript-code> node demo136.js lq4
매번 실행할 때마다 'lq4'처럼 서로 다른 3자리 랜덤 문자열이 출력됩니다. 함수 호출 시 인자 값을 변경하면 원하는 길이의 랜덤 문자열도 손쉽게 생성할 수 있습니다.
참고: 보안이 중요한 경우
Math.random()은 암호학적으로 안전한 난수가 아니므로, 비밀번호 재설정 토큰이나 인증 코드처럼 보안이 중요한 용도라면 crypto.getRandomValues() 또는 Node.js의 crypto.randomBytes()를 사용하는 것이 좋습니다.