Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 랜덤 알파벳 문자열 생성하기

이 튜토리얼에서는 C++를 사용하여 임의의(랜덤) 알파벳 문자열을 생성하는 방법을 알아봅니다.

기본 아이디어는 매우 간단합니다. 알파벳 소문자 26개('a'~'z')를 미리 배열에 저장해 두고, rand() 함수로 이 배열에서 무작위로 문자를 골라낸 뒤, 원하는 길이만큼 이어 붙여 하나의 문자열을 완성하는 것입니다.

핵심 동작 원리

  • 알파벳 배열: 'a'부터 'z'까지 26개의 문자를 상수 배열에 담아 둡니다.
  • rand() % MAX: rand()가 반환하는 값에 26으로 나눈 나머지를 취하면 항상 0~25 범위의 인덱스가 얻어지므로, 배열 범위를 벗어나지 않고 안전하게 임의의 문자를 선택할 수 있습니다.
  • srand(time(NULL)): 현재 시간을 시드(seed)로 설정하여 프로그램을 실행할 때마다 서로 다른 난수 시퀀스가 나오도록 합니다. 이 호출이 없으면 매번 동일한 결과가 반복됩니다.

예제 코드

#include <bits/stdc++.h>
using namespace std;
const int MAX = 26;

// 길이 n의 랜덤 알파벳 문자열 생성
string gen_random(int n){
    char alphabet[MAX] = {
        'a', 'b', 'c', 'd', 'e', 'f', 'g',
        'h', 'i', 'j', 'k', 'l', 'm', 'n',
        'o', 'p', 'q', 'r', 's', 't', 'u',
        'v', 'w', 'x', 'y', 'z'
    };
    string res = "";
    for (int i = 0; i < n; i++)
        res = res + alphabet[rand() % MAX];
    return res;
}

int main(){
    srand(time(NULL));
    int n = 7;
    cout << gen_random(n) << endl;
    return 0;
}

실행 결과

gwqrgpa

프로그램을 실행할 때마다 위와 같은 7자리 랜덤 문자열이 새롭게 출력되며, 그 값은 매번 달라집니다. 변수 n의 값을 바꾸면 원하는 길이의 문자열을 자유롭게 생성할 수 있습니다.

참고: 더 나은 난수가 필요하다면

위 방식의 rand()는 난수의 품질이 떨어지고 범위가 제한적일 수 있습니다. C++11 이후에는 <random> 헤더의 mt19937(메르센 트위스터) 엔진과 uniform_int_distribution을 사용하는 것이 공식적으로 권장됩니다. 보안이 중요한 용도(비밀번호 생성 등)라면 반드시 암호학적으로 안전한 난수 생성기를 사용해야 한다는 점도 기억해 두세요.