ShovelingLife
A Game Programmer
ShovelingLife
전체 방문자
오늘
어제
  • 분류 전체보기 (1068) N
    • 그래픽스 (57)
      • 공통 (19)
      • 수학 물리 (22)
      • OpenGL & Vulkan (1)
      • DirectX (14)
    • 게임엔진 (181) N
      • Unreal (69)
      • Unity (101) N
      • Cocos2D-X (3)
      • 개인 플젝 (8)
    • 코딩테스트 (221)
      • 공통 (7)
      • 프로그래머스 (22)
      • 백준 (162)
      • LeetCode (19)
      • HackerRank (2)
      • 코딩테스트 알고리즘 (8)
    • CS (235)
      • 공통 (21)
      • 네트워크 (44)
      • OS & 하드웨어 (55)
      • 자료구조 & 알고리즘 (98)
      • 디자인패턴 (6)
      • UML (4)
      • 데이터베이스 (7)
    • 프로그래밍 언어 (346)
      • C++ (167)
      • C# (88)
      • Java (9)
      • Python (33)
      • SQL (30)
      • JavaScript (8)
      • React (7)
    • 그 외 (9)
      • Math (5)
      • 일상 (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Source Code 좌측 상단에 복사 버튼 추가 완료
  • 언리얼 엔진 C++ 빌드시간 단축 꿀팁
  • 게임 업계 코딩테스트 관련
  • 1인칭 시점으로 써내려가는 글들

인기 글

태그

  • 문자열
  • C++
  • c#
  • C
  • 티스토리챌린지
  • 배열
  • Unity
  • 언리얼
  • 오블완
  • string
  • 백준
  • 포인터
  • 알고리즘
  • 파이썬
  • 클래스
  • SQL
  • 유니티
  • 함수
  • 프로그래머스
  • 그래픽스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ShovelingLife

A Game Programmer

프로그래밍 언어/C#

C# 난수 생성 Random 클래스

2022. 10. 24. 16:45

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
    '프로그래밍 언어/C#' 카테고리의 다른 글
    • C# 제네릭 형식 제약 조건 (where)
    • C# string.format, 문자열 보간($)을 이용한 문자열 출력 방법
    • C# 구조체가 IEquatable<T>를 상속해야 하는 이유
    • C# 가비지 컬렉터 (Garbage Collector / GC)
    ShovelingLife
    ShovelingLife
    Main skill stack => Unity C# / Unreal C++ Studying Front / BackEnd, Java Python

    티스토리툴바