언리얼과 C++을 포괄해서 난수를 생성하는 방법에는 여러가지가 있다.
함수마다 속도와 난수 품질이 달라 목적에 따라 선택해 사용할 수 있다.
대표적인 함수 몇개만 언급해보고자 한다.
1. FMath::Rand() (RandRange(Min, Max)) ( 언리얼 메소드)
- 반환값 : int32
- 범위 : 0 ~ RAND_MAX(32767) 사이의 정수(RandRange(Min, Max)는 Min~Max사이의 정수)
- 속도 : 빠름
- 난수 품질 : 낮음(패턴 있음)
int32 randNum = FMath::Rand();
2. FMath::FRand() (FRandRange(Min, Max)) (언리얼 메소드)
- 반환값 : float
- 범위 : 0.0 ~ 1.0 사이의 부동소수점 (FRandRange(Min, Max)는 Min~Max사이의 부동소수점)
- 속도 : 빠름
- 난수 품질 : 낮음(패턴 있음)
float RandNum = FMath::FRand();
3. FPlatformMath::Random() ("HAL/PlatformMath.h")
- 반환값 : int32
- 범위 : 0 ~ MAX_INT32 (2,147,483,647)
- 속도 : 보통
- 난수 품질 : 보통(플랫폼 별 최적화)
int32 RandNum = FPlatformMath::Random();
4. std::mt19937(seed) (메르센 트위스터) (<random>)
- 반환값 : int
- 범위 : 0 ~ (2^32 - 1) (4294967295, 즉 4,294,967,295)
- 속도 : 느림
- 난수 품질 : 좋음(정교한 패턴)
std::mt19937 gen(42); // 시드를 42로 고정
int32 RandNum = gen();
5. std::random_device (<random>)
- 반환값 : unsigned int
- 범위 : 0 ~ 4,294,967,295
- 속도 : 가장 느림
- 난수 품질 : 아주 좋음(완전 난수)
std::random_device rd;
int32 RandNum = rd();
'게임 개발 공부 > 언리얼엔진' 카테고리의 다른 글
| UE5 - 채팅시스템(멀티 - 리슨서버) : 채팅ID 등록 (0) | 2025.03.17 |
|---|---|
| UE5 - 채팅시스템(싱글) (0) | 2025.03.13 |
| UE5 - 포스트프로세스 머티리얼 (0) | 2025.03.11 |
| UE5 - 포스트 프로세스 머티리얼 : 아웃라인 (0) | 2025.03.10 |
| UE5 | C++ 개발 - TMap을 활용한 무기 스왑 (0) | 2025.03.07 |