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

C++로 임의의 영숫자 문자열을 생성하는 방법

이 글에서는 C++를 사용하여 임의의 영숫자(alphanumeric) 문자열을 생성하는 방법을 알아봅니다. 여기서 사용할 문자 집합은 소문자(a-z), 대문자(A-Z), 그리고 숫자(0-9)로 구성됩니다. 프로그램은 이 문자들 중에서 무작위로 선택하여 원하는 길이의 랜덤 문자열을 만들어냅니다.

입력: 문자열 길이를 지정합니다
출력: 해당 길이의 랜덤 문자열 (예: "XSme6VAsvJ")

알고리즘

1단계: 대문자, 소문자, 숫자를 모두 담는 배열(문자열 상수)을 정의합니다
2단계: 사용자로부터 원하는 길이 n을 입력받습니다
3단계: n번 반복하면서 문자를 무작위로 선택하여 길이 n의 문자열을 생성합니다
4단계: 종료합니다

예제 코드

#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;

static const char alphanum[] = "0123456789"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";

int len = sizeof(alphanum) - 1;

char genRandom() { // 랜덤 문자열 생성 함수
   return alphanum[rand() % len];
}

int main() {
   srand(time(0)); // 매번 다른 난수 시퀀스를 얻기 위해 시드 설정
   int n;
   cout << "Enter string length: ";
   cin >> n;
   for(int z = 0; z < n; z++) {    // 길이 n의 문자열 생성
      cout << genRandom(); // 주어진 목록에서 임의의 문자 선택
   }
   return 0;
}

코드 설명

핵심 동작 원리는 다음과 같습니다.

1. 문자 집합 정의: alphanum 배열에 숫자, 대문자, 소문자를 모두 포함시킵니다. 이 문자열이 랜덤 문자를 추출할 후보군이 됩니다.

2. 난수 시드 초기화: srand(time(0))을 호출하여 현재 시간을 시드로 설정합니다. 이렇게 하면 프로그램을 실행할 때마다 서로 다른 난수 시퀀스가 생성되어 매번 다른 결과를 얻을 수 있습니다.

3. 랜덤 문자 선택: genRandom() 함수는 rand() % len을 통해 0부터 (len-1) 사이의 인덱스를 무작위로 구하고, 해당 위치의 문자를 반환합니다.

4. 문자열 조립: main()에서 n번 반복하면서 랜덤 문자를 하나씩 출력하여 최종적으로 길이 n의 랜덤 문자열을 완성합니다.

실행 결과

Enter string length: 10
XSme6VAsvJ

참고 사항

C 스타일의 rand() 함수는 간단한 용도에는 충분하지만, 난수 품질이 중요한 경우(예: 보안 토큰 생성)에는 C++11 이상에서 제공하는 <random> 헤더의 mt19937(메르센 트위스터) 엔진과 uniform_int_distribution을 사용하는 것이 좋습니다. 또한 보안 목적의 문자열이라면 std::random_device를 활용해 예측 불가능한 난수를 확보하는 것이 안전합니다.