C#의 Random.NextBytes() 메서드는 지정된 바이트 배열(byte[])의 각 요소를 무작위 숫자로 채우는 데 사용됩니다. 암호화 키 생성, 시뮬레이션 데이터 준비 등 임의의 바이트 값이 필요한 다양한 상황에서 유용하게 활용할 수 있습니다.
문법(Syntax)
NextBytes() 메서드의 기본 문법은 다음과 같습니다.
public virtual void NextBytes (byte[] buffer);
여기서 buffer는 무작위 숫자로 채워질 바이트 배열을 의미합니다. 메서드가 호출되면 배열의 모든 요소가 0부터 255 사이의 임의 값으로 덮어써집니다.
예제 1
첫 번째 예제를 통해 NextBytes() 메서드의 동작 방식을 살펴보겠습니다.
using System;
public class Demo {
public static void Main(){
Random r = new Random();
Random r2 = new Random();
Random r3 = new Random();
Byte[] arr = new Byte[5];
r3.NextBytes(arr);
Console.WriteLine("Random numbers.....");
for (int i = 1; i <= 5; i++)
Console.WriteLine(r.Next());
Console.WriteLine("\nRandom numbers from 1 to 10.....");
for (int i = 1; i <= 5; i++)
Console.WriteLine(r2.Next(10));
Console.WriteLine("\nRandom numbers in the byte array...");
for (int i = 0; i < arr.GetUpperBound(0); i++)
Console.WriteLine(arr[i]);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Random numbers..... 2081486546 329484380 1639318640 1499756340 2122408387 Random numbers from 1 to 10..... 9 1 7 6 9 Random numbers in the byte array... 210 92 112 52
이 예제에서는 세 개의 Random 객체를 생성했습니다. r.Next()는 제한 없는 정수 난수를, r2.Next(10)는 0부터 9 사이의 난수를 반환합니다. 그리고 r3.NextBytes(arr)를 호출하여 길이 5짜리 바이트 배열을 무작위 값으로 채웠습니다.
예제 2
이번에는 더 간단한 예제로 NextBytes() 메서드를 확인해 보겠습니다.
using System;
public class Demo {
public static void Main(){
Random r = new Random();
Byte[] arr = new Byte[2];
r.NextBytes(arr);
Console.WriteLine("Random numbers in the byte array...");
for (int i = 0; i < 2; i++)
Console.WriteLine(arr[i]);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Random numbers in the byte array... 173 11
실행할 때마다 출력되는 값은 달라지며, 이는 NextBytes()가 매번 새로운 무작위 바이트 값을 생성하기 때문입니다. 참고로 .NET Core 및 .NET 5 이상에서는 RandomNumberGenerator.Fill() 메서드를 사용하면 더 안전한(암호학적으로 강력한) 난수 바이트를 생성할 수도 있습니다.