이번시간에 C에서 난수 생성과 Random string (무작위 문자열)을 생성하는 방법에 대하여 배워보도록 하겠습니다.
C에서 무작위 문자열을 만들기 위해서 중요 함수는 다음과 같습니다.
중요 함수 소개
void srand(unsigned int seed);
함수에서 사용하는 rand 의사 번호 생성기의 시작 시드 값을 설정합니다.
이 함수는 전체 프로그램에서 한번만 실행 되면 됩니다.
매개변수인 seed 은 현재 시간을 사용 하면 됩니다.
srand(time(0));
int rand(void);
rand 함수는 0부터 RAND_MAX(32767) 범위의 의사 난수 정수를 반환합니다.
간단한 난수 생성 예제를 보여 드리겠습니다.
#include <stdlib.h> // rand(), srand()
#include <stdio.h> // printf()
#include <time.h> // time()
void SimpleRandDemo(int n)
{
// Print 난수 10 번
for (int i = 0; i < n; i++)
{
printf(" %6d\n", rand());
}
}
void RangedRandDemo(int range_min, int range_max, int n)
{
for (int i = 0; i < n; i++)
{
int r = ((double)rand() / RAND_MAX) * (range_max - range_min) + range_min;
printf(" %6d\n", r);
}
}
int main(void)
{
srand(time(0));
printf("간단한 Rand demo ====\n\n");
SimpleRandDemo(10);
printf("\n범위 지정 난수 ====\n\n");
RangedRandDemo(-100, 100, 10);
}

random 문자열 생성
간단 랜덤 문자열 함수
c에서는 random 문자열을 생성하는 방법중 그래도 제일 검증된 방법은 다음방법이 있습니다.
한글자 한글자 rand 로 정수를 생성해서 이를 문자로 바꾸는 방법입니다.
static char* rand_string(char* str, size_t size)
{
const char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,.-#'?!";
if (size)
{
--size;
for (size_t n = 0; n < size; n++)
{
int key = rand() % (int)(sizeof charset - 1);
str[n] = charset[key];
}
str[size] = '\0';
}
return str;
}
for 문으로 길이만큼 한글자 한글자 난수를 생성해서 charset 배열에서 해당 문자를 뽑아내어 문자열로 만드는 방법입니다.
어떤가요? 어렵지 않죠.
charset 부분만 잘 수정하면 특정 숫자로만 된 Rnadom 문자열을 만들수도 있습니다.
const char charset[] = "0123456789";
위 코드 에서 이렇게 수정하면 됩니다.
전체 코드
#include <stdlib.h> // rand(), srand()
#include <stdio.h> // printf()
#include <time.h> // time()
static char* rand_string(char* str, size_t size)
{
const char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,.-#'?!";
if (size)
{
--size;
for (size_t n = 0; n < size; n++)
{
int key = rand() % (int)(sizeof charset - 1);
str[n] = charset[key];
}
str[size] = '\0';
}
return str;
}
static char* rand_string_number(char* str, size_t size)
{
const char charset[] = "0123456789";
if (size)
{
--size;
for (size_t n = 0; n < size; n++)
{
int key = rand() % (int)(sizeof charset - 1);
str[n] = charset[key];
}
str[size] = '\0';
}
return str;
}
int main()
{
char randbuff[65] = {0,};
srand(time(0));
rand_string(randbuff, 64);
printf("랜덤 문자열:\n");
printf("%s\n\n", randbuff);
printf("랜덤 숫자구성 문자열:\n");
rand_string_number(randbuff, 20);
printf("%s\n", randbuff);
}

결론
코드와 예제를 통해 C 에서 랜덤 숫자와 문자열을 생성하는 방법을 배웠습니다.
C# 에서는 의 같은 기능이 궁금하시면 이전글 참고 하시면 됩니다.
C#에서 난수 즉 Random 숫자와 문자열 생성하기
C#의 Random 클래스는 무작위 숫자를 생성하는 기능을 제공합니다. Random 클래스는 문자열을 포함한 다른 데이터 유형도 생성할 수 있습니다. 이 코드 예제에서는 C#에서 무작위 숫자와 문자열을 생성하는 방법을 배워보겠습니다. 이 글에서는 C#의 Random 클래스를 사용하여 랜덤 숫자와 문자열을 생성하는 방법에 대해 자세히 알아보겠습니다. C#에서 무작위 숫자와 무작위 문자열 생성하기 Random 클래스 소개 Random 클래스는 C#에서 랜덤 숫자를 생성하는 데 사용됩니다. 또한 이 클래스를 사용하여 문자열을 포함한 다른 데이터 유형도 생성할 수 있습니다. 이 코드 예제에서는 C#에서 랜덤 숫자를 생성하는 방법을 알아보겠습니다. Random 클래스 생성자 Random 클래스의 생성자는 두 가지 오버로드된 형식이 있습니다. 생성자는 값을 입력하지 않거나 시드 값을 입력할 수 있습니다. …