JavaScript에서 숫자 n을 입력받으면, 영어 소문자 알파벳 26개(a~z)만으로 구성된 길이 n의 랜덤 문자열을 반환하는 함수를 작성해 보겠습니다.
구현 원리
핵심 아이디어는 다음과 같습니다.
Math.random()으로 0 이상 1 미만의 난수를 생성합니다.- 여기에 26을 곱하고
Math.floor()로 정수화하여 0~25 사이의 정수를 얻습니다. - 소문자 'a'의 아스키 코드가 97이므로,
String.fromCharCode(97 + random)을 사용해 해당하는 알파벳 문자로 변환합니다.
예제 코드
const num = 8;
const randomNameGenerator = num => {
let res = '';
for(let i = 0; i < num; i++){
const random = Math.floor(Math.random() * 26);
res += String.fromCharCode(97 + random);
};
return res;
};
console.log(randomNameGenerator(num));실행 결과
콘솔 출력 결과는 다음과 같습니다.
kdcwping
참고: 위 결과는 여러 가능한 출력 중 하나일 뿐입니다. 난수 기반으로 동작하기 때문에 실행할 때마다 콘솔에 출력되는 문자열은 매번 달라집니다.
추가 팁
난수 범위는 반드시 26으로 설정해야 합니다. 만약 27을 곱하게 되면 0~26 사이의 값이 생성되는데, 이 경우 아스키 코드 123번인 '{' 문자가 포함될 수 있어 요구 조건(소문자 알파벳만 사용)을 벗어나게 됩니다.