본문 바로가기

언리얼 + cpp

UE_LOG를 활용한 로또 번호 생성기 구현하기

Actor가 생성되는 시점(BeginPlay)에 로또 번호 
(각 숫자는 1~45범위이고 중복되지 않는 숫자 6개)를 콘솔에 출력하는 코드를 구현하세요.)

 

**요구사항**
- 언리얼 엔진의 `FMath::RandRange()`를 사용해서 1~45사이의 랜덤 숫자를 생성합니다.
- 배열에 값이 이미 존재하는지 확인하기 위해 `TArray::Contains`를 사용할 수 있습니다.

[출력 예시]
//[LogTemp]는 실제 출력하는게 아니고 카테고리입니다.
[LogTemp] Lotto Numbers: 3, 15, 22, 30, 35, 44

void AMyActor::BeginPlay()
{
	Super::BeginPlay();
    
	int32 start = 1; // 추첨 시작 번호
	int32 end = 45; // 추첨 끝 번호
	int32 num = 0; // 당첨 번호
	TArray<int32> Numbers; // 당첨 번호 넣을 배열

	for (int32 i = 0; i < 6; ++i) // 랜덤 숫자 6개 받기
	{
		num = FMath::RandRange(start, end);
		while (Numbers.Contains(num)) // Numbers 배열에 num이 포함돼있으면(중복 확인)
		{
			num = FMath::RandRange(start, end); // 다시 랜덤한 값 받기
		}
		
		Numbers.Add(num); // 배열에 당첨 숫자 넣기
	}
	
	UE_LOG(LogTemp, Warning, TEXT("Lotto Numbers: %d, %d, %d, %d, %d, %d"), Numbers[0], Numbers[1], Numbers[2], Numbers[3], Numbers[4], Numbers[5]);
}

위 코드를 구현한 액터를 언리얼엔진의 레벨에 배치하고 실행하면 Output Log에 실행 결과(UE_LOG)가 출력된다.

실행할때 마다 랜덤한 숫자 6개가 중복 없이 출력된다