본문 바로가기
Program Language/C#

Part2. C# 기초 다지기(5. Random 클래스)

by 토담이아빠 2023. 2. 14.

Random 클래스

 

이번 포스팅에서는 C#에서 랜덤값을 만들어 주는  Random 클래스에 대해서 정리했습니다.


Random 클래스 객체 생성

 

C#에서 랜덤 값을 만들려면 아래와 같이 Random 클래스의 객체를 생성해야 합니다. 


Random rand = new Random(); // 랜덤 객체 생성

Next() 메서드

 

Random 클래스는 int형, byte형,  double형과 같이 타입별로 랜덤값을 생성시킬 수 있는 메서드들이 있습니다. 다음 예는 int형에 대한 랜덤값을 생성시키는 Next() 메서드의 사용법입니다.


using System;
using System.Data;

namespace Random_exam
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Random rand = new Random(); // 랜덤 객체 생성
            int x = rand.Next();        // 0 ~ int.MaxValue 까지 난수 발생
            int y = rand.Next(100);     // 0 ~ 99까지 난수 발생
            int z = rand.Next(1, 7);    // 1 ~ 6까지 난수 발생

            Console.WriteLine("0 ~ int.MaxValue 까지 난수 : {0}",x);
            Console.WriteLine("0 ~ 99 까지 난수 : {0}", y);
            Console.WriteLine("0 ~ 6 까지 난수 : {0}", z);

        }
    }
}

결과

0 ~ int.MaxValue 까지 난수 : 775500063
0 ~ 99 까지 난수 : 13
0 ~ 6 까지 난수 : 3

NextDouble() 메서드

 

다음은 double형에 대해서 랜덤값을 발생시키는 NextDouble() 메서드입니다. 이 메서드는 0.0 이상 1.0 미만의 실수를 생성합니다. 아래는 5개의 double형 랜덤값을 생성하여 출력하는 예제입니다.


using System;
using System.Data;

namespace Random_exam
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Random rand = new Random(); // 랜덤 객체 생성
            double[] d = new double[5];
            for(int i = 0; i < 5; i++)
            {
                d[i] = rand.NextDouble();
                Console.WriteLine("double형 랜덤값[{0}] : {1}", i, d[i]);
            }

        }
    }
}

결과

double형 랜덤값[0] : 0.274586562660796
double형 랜덤값[1] : 0.692264330430079
double형 랜덤값[2] : 0.0524089993221727
double형 랜덤값[3] : 0.884871699328009
double형 랜덤값[4] : 0.735656784724284

NextByte() 메서드

 

마지막으로 NextBytes() 메서드입니다. 이 메서드는 독특하게 한 번의 호출로 배열 전체를 랜덤 값으로 채울 수 있습니다.


using System;
using System.Data;

namespace Random_exam
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Random rand = new Random(); // 랜덤 객체 생성
            Byte[] b = new Byte[5];
            rand.NextBytes(b);          // 배열전체를 랜덤값으로 할당

            for(int i = 0; i < 5; i++)
            {
                Console.WriteLine("Byte형 랜덤값[{0}] : {1}", i, b[i]);
            }

        }
    }
}

결과

Byte형 랜덤값[0] : 5
Byte형 랜덤값[1] : 204
Byte형 랜덤값[2] : 227
Byte형 랜덤값[3] : 17
Byte형 랜덤값[4] : 109

[Review]
"초보자를 위한 C# 200제(2판)" / 저자  강병익

댓글