1. C# random(랜덤) 클래스에 대해서.
랜덤 클래스가 정의 되어있는 곳을 살펴보면 아래 캡쳐와 같다.
1. 랜덤클래스는 System 네임스페이스 안에 속해있다.
Random 클래스는 namespace System 괄호 안에 존재한다. Systen 네임스페이스는 C# 파일을 만들면 자동으로 포함되어있기 때문에 Random 클래스를 사용하기 위해서 특별히 무언가를 추가한다거나 할 필요가 없다.
2. 랜덤클래스 객체를 생성하는 방법 (생성자)
Random 변수명 = new Random();: new 키워드와 생성자를 이용해서 Random 타입의 객체를 생성한다.
3. 랜덤클래스의 Next() 메서드
Next() 메서드는 임의의 정수를 반환하는 메서드(멤버 함수) 입니다. (음수는 나오지 않음, n>=0)
Random rand = new Random();
int a = rand.Next(); //a에는 임의의 랜덤한 숫자가 들어가게 된다.
4. 랜덤클래스의 Next(int minValue, int maxValue) 메서드
Next(int minValue, int MaxValue)는 min~max 사이의 임의의 랜덤한 수를 반환하는 메서드다. (min이상, max미만)
Random rand = new Random();
int a = rand.Next(1, 5); //변수 a에는 1 이상 ~5 미만 사이의 임의의 수가 들어온다. (1, 2, 3, 4)
5. 랜덤클래스의 Next(int maxValue) 메서드
Next(int maxValue) 함수는 max보다 작은 임의의 정수를 반환하는 메서드 입니다. (음수는 나오지 않음, n>=0)
Random rand = new Random();
int a = randNext(5); //변수 a에는 5보다 작은 음이아닌 정수가 들어온다. (0, 1, 2, 3, 4, 5)
6. 랜덤클래스의 NextBytes(byte[] buffer); 메서드
NextBytes(byte[] buffer)는 byte 타입의 배열에 random한 값을 채워 넣는 메서드다.
Random rand = new Random();
Byte[] arrByte = new Byte[5];
rand.NextBytes(arrByte); //배열 arrByte 모든 요소에 각각 랜덤한 값을 넣어준다.
배열 요소에 넣어주는 값의 범위는 당연하게도, 0~바이트타입(부호 없는 8비트 정수)의 최대 크기다.
7. 랜덤클래스의 NextDouble(); 메서드
NextDouble()은 double 타입의 임의의 수를 반환하는 메서드다.
Random rand = new Random();
double d = rand.NextDouble(); // 0.0~1.0 사이의 double 타입 수를 random 하게 반환한다.
2. C# random(랜덤) 예제 및 사용법
//C# Random Class Example. BlockDMask.
using System;
static void Main(string[] args)
{
Random rand = new Random();
//1. Next()
Console.WriteLine("1. Next()");
for (int i=0; i < 10; ++i)
{
int a = rand.Next();
Console.WriteLine("Next() : " + a);
}
//2. Next(min, max)
Console.WriteLine("\n2. Next(min, max)");
for (int i = 0; i < 10; ++i)
{
int a = rand.Next(1, 5);
Console.WriteLine("Next(1, 5) : " + a);
}
//3. Next(max)
Console.WriteLine("\n3. Next(max)");
for (int i = 0; i < 10; ++i)
{
int a = rand.Next(5);
Console.WriteLine("Next(5) : " + a);
}
//4. 응용1 (배열안의 랜덤)
Console.WriteLine("\n4. 문자열 배열의 랜덤 index를 가지고 오기");
string[] str = { "BlockDMask", "Random", "C# example", "Blog", "Programmer" };
for (int i = 0; i < 10; ++i)
{
//randomIndex는 str.Length 보다 작은 음이 아닌 정수를 반환하기 때문에,
//랜덤값을 배열의 index로 바로 사용해도 상관없는 상황이 된다.
int randomIndex = rand.Next(str.Length); //Next(Max).
Console.WriteLine("randomIndex = {0}, str[randomIndex] = {1}", randomIndex, str[randomIndex]);
}
//5. NextBytes(byte[] buffer)
Console.WriteLine("\n5. NextBytes(byte[] buffer)");
byte[] arrByte = new byte[5];
rand.NextBytes(arrByte); //한번 호출에 배열 모든 요소 랜덤값 세팅
for (int i = 0; i < arrByte.Length; ++i)
{
Console.WriteLine("arrByte[{0}] : {1}", i, arrByte[i]);
}
//6. NextDouble()
Console.WriteLine("\n6. NextDouble()");
for (int i = 0; i < 10; ++i)
{
double d = rand.NextDouble();
Console.WriteLine("NextDouble() : " + d);
}
}
▲C# Random 예제의 결과다.
1. Next();
2. Next(1, 5);
3. Next(5);
4. Next(스트링길이);
5. NextBytes(byte[] buffer);
6. NextDouble();
출처: https://blockdmask.tistory.com/347 [개발자 지망생:티스토리]
'프로그래밍 언어 > C#' 카테고리의 다른 글
C# 제네릭 형식 제약 조건 (where) (0) | 2023.01.06 |
---|---|
C# string.format, 문자열 보간($)을 이용한 문자열 출력 방법 (0) | 2023.01.05 |
C# 구조체가 IEquatable<T>를 상속해야 하는 이유 (0) | 2022.08.21 |
C# 가비지 컬렉터 (Garbage Collector / GC) (0) | 2022.08.10 |
C# ILookup과 Lookup<TKey, TElement>와 Dictionary<TKey, TValue>간 차이 (0) | 2022.08.07 |