C#의 Random 클래스는 무작위 숫자 즉 난수 를 생성하는 기능을 제공합니다. Random 클래스는 문자열을 포함한 다른 데이터 유형도 생성할 수 있습니다. 이 코드 예제에서는 C#에서 무작위 숫자와 문자열을 생성하는 방법을 배워보겠습니다.
이 글에서는 C#의 Random 클래스를 사용하여 랜덤 숫자와 문자열을 생성하는 방법에 대해 자세히 알아보겠습니다.
C#에서 무작위 숫자와 무작위 문자열 생성하기
Random 클래스 소개
Random 클래스는 C#에서 랜덤 숫자를 생성하는 데 사용됩니다. 또한 이 클래스를 사용하여 문자열을 포함한 다른 데이터 유형도 생성할 수 있습니다. 이 코드 예제에서는 C#에서 랜덤 숫자를 생성하는 방법을 알아보겠습니다.
Random 클래스 생성자
Random 클래스의 생성자는 두 가지 오버로드된 형식이 있습니다. 생성자는 값을 입력하지 않거나 시드 값을 입력할 수 있습니다. Random 클래스는 Random.Next(), Random.NextBytes(), Random.NextDouble() 메서드를 제공합니다. Random.Next() 메서드는 랜덤 숫자를 반환하고, Random.NextBytes()는 랜덤 숫자로 채워진 바이트 배열을 반환하며, Random.NextDouble()은 0.0과 1.0 사이의 랜덤 숫자를 반환합니다.
Random.Next() 메서드
Random.Next() 메서드는 세 가지 오버로드된 형식이 있으며, 랜덤 숫자의 최솟값과 최댓값 범위를 설정할 수 있습니다.
다음 코드는 랜덤 숫자를 반환합니다.
int num = random.Next();
Random.Next(1000) 메서드
다음 코드는 1000 미만의 랜덤 숫자를 반환합니다.
int num = random.Next(1000);
RandomNumber 메서드
다음 코드는 최솟값과 최댓값 범위 내에서 랜덤 숫자를 생성합니다.
private readonly Random _random = new Random();
public int RandomNumber(int min, int max)
{
return _random.Next(min, max);
}
RandomNumber와 RandomString 조합
RandomNumber와 RandomString 두 가지 메서드를 결합하여 랜덤 문자열과 숫자의 조합을 생성할 수 있습니다.
다음 코드는 주어진 크기로 무작위 문자열 생성하는 코드 입니다.
```csharp
public string RandomString(int size, bool lowerCase = false)
{
var builder = new StringBuilder(size);
// 유니코드/ASCII 문자는 두 그룹으로 나눠집니다.
// (문자 65–90 / 97–122):
// 첫 번째 그룹에는 대문자가 포함되고
// 두 번째 그룹에는 소문자가 포함됩니다.
// char는 하나의 유니코드 문자입니다.
char offset = lowerCase ? 'a' : 'A';
const int lettersOffset = 26; // A...Z 또는 a..z: 길이=26
for (var i = 0; i < size; i++)
{
var @char = (char)_random.Next(offset, offset + lettersOffset);
builder.Append(@char);
}
return lowerCase ? builder.ToString().ToLower() : builder.ToString();
}
```
RandomPassword 메서드
다음 코드는 길이가 10인 패스워드를 생성하며, 처음 4개 글자는 소문자, 다음 4개 글자는 숫자, 마지막 2개 글자는 대문자입니다.
```csharp
// 무작위 비밀번호 생성
// 4-소문자 + 4-숫자 + 2-대문자
public string RandomPassword()
{
var passwordBuilder = new StringBuilder();
// 4글자의 소문자
passwordBuilder.Append(RandomString(4, true));
// 1000에서 9999 사이의 4자리 숫자
passwordBuilder.Append(RandomNumber(1000, 9999));
// 2글자의 대문자
passwordBuilder.Append(RandomString(2));
return passwordBuilder.ToString();
}
```
전체 코드 살펴보기
Visual Studio Consol App 으로 작성된 완전한 코드를 살펴보겠습니다.
using System;
using System.Text;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var generator = new RandomGenerator();
var randomNumber = generator.RandomNumber(5, 100);
Console.WriteLine($"5에서 100 사이의 무작위 숫자: {randomNumber}");
var randomString = generator.RandomString(10);
Console.WriteLine($"10자리 무작위 문자열: {randomString}");
var randomPassword = generator.RandomPassword();
Console.WriteLine($"4-소문자 + 4-숫자 + 2-대문자 무작위 비밀번호: {randomPassword}");
Console.ReadKey();
}
}
public class RandomGenerator
{
// 무작위 숫자 생성기 인스턴스화
// 같은 인스턴스에서 계속 Next를 사용하는 것이 좋습니다.
private readonly Random _random = new Random();
// 범위 내에서 무작위 숫자 생성
public int RandomNumber(int min, int max)
{
return _random.Next(min, max);
}
// 주어진 크기로 무작위 문자열 생성
public string RandomString(int size, bool lowerCase = false)
{
var builder = new StringBuilder(size);
// 유니코드/ASCII 문자는 두 그룹으로 나눠집니다.
// (문자 65–90 / 97–122):
// 첫 번째 그룹에는 대문자가 포함되고
// 두 번째 그룹에는 소문자가 포함됩니다.
// char는 하나의 유니코드 문자입니다.
char offset = lowerCase ? 'a' : 'A';
const int lettersOffset = 26; // A...Z 또는 a..z: 길이 = 26
for (var i = 0; i < size; i++)
{
var @char = (char)_random.Next(offset, offset + lettersOffset);
builder.Append(@char);
}
return lowerCase ? builder.ToString().ToLower() : builder.ToString();
}
// 4-소문자 + 4-숫자 + 2-대문자
public string RandomPassword()
{
var passwordBuilder = new
StringBuilder();
// 4글자의 소문자
passwordBuilder.Append(RandomString(4, true));
// 1000에서 9999 사이의 4자리 숫자
passwordBuilder.Append(RandomNumber(1000, 9999));
// 2글자의 대문자
passwordBuilder.Append(RandomString(2));
return passwordBuilder.ToString();
}
}
}
결과는 다음과 같이 보여집니다.
output |
5에서 100 사이의 무작위 숫자: 42 10자리 무작위 문자열: THLTDBRTZS 4-소문자 + 4-숫자 + 2-대문자 무작위 비밀번호: aqho9998XI |
결론
이 글과 코드와 예제를 통해 C#에서 랜덤 숫자와 문자열을 생성하는 방법을 배웠습니다. 이러한 기능은 다양한 프로그래밍 작업에 유용하게 사용될 수 있습니다.