본문으로 건너뛰기
게임 수학 · 게임 AI 기초집LESSON 12

랜덤과 확률

난이도초급
예상 시간40분
선수지식5강의 범위, 11강의 이동 모델

12강. 랜덤과 확률

1. 이번 강의에서 해결할 문제

AI 버그가 발생했지만 매 실행 결과가 달라 재현하기 어렵고, 70% 공격 같은 확률을 독립 if 여러 개로 작성해 전체 확률이 예상과 달라집니다.

2. 학습 목표

3. 핵심 개념

Pseudo Random은 Seed와 호출 순서가 같으면 같은 값 순서를 만듭니다. 테스트에서는 고정 Seed로 버그를 재현하고 실제 플레이에서는 Spawner가 적마다 명시적 Seed를 제공할 수 있습니다.

가중치 선택은 전체 합 안의 난수 하나를 뽑고 누적 구간을 찾습니다. 확률 합을 꼭 100으로 맞출 필요는 없지만 음수 가중치는 제거해야 합니다.

4. 단계별 실습

C++ · 파일 경로: Source/TopDownSurvival/AI/MathAIController.h · Random 상태

MathAIController.h · 추가
UPROPERTY(EditDefaultsOnly, Category = "AI|Random")
int32 RandomSeed = 12345;

FRandomStream RandomStream;

FVector ChoosePatrolLocation(float Radius) const;
FName ChooseIdleAction();

C++ · 파일 경로: Source/TopDownSurvival/AI/MathAIController.cpp

MathAIController.cpp · 순찰과 가중치
#include "NavigationSystem.h"

void AMathAIController::BeginPlay()
{
Super::BeginPlay();
RandomStream.Initialize(RandomSeed);
}

FVector AMathAIController::ChoosePatrolLocation(float Radius) const
{
FNavLocation Result;
UNavigationSystemV1* Navigation =
FNavigationSystem::GetCurrent<UNavigationSystemV1>(GetWorld());
if (Navigation && GetPawn() &&
Navigation->GetRandomReachablePointInRadius(
GetPawn()->GetActorLocation(), Radius, Result))
{
return Result.Location;
}
return GetPawn() ? GetPawn()->GetActorLocation() : FVector::ZeroVector;
}

FName AMathAIController::ChooseIdleAction()
{
const float Roll = RandomStream.FRandRange(0.0f, 10.0f);
if (Roll < 6.0f) return TEXT("Wait");
if (Roll < 9.0f) return TEXT("LookAround");
return TEXT("ShortPatrol");
}

GetRandomReachablePointInRadius 내부 랜덤은 Navigation System이 관리합니다. 완전한 결정론이 필요한 테스트라면 RandomStream으로 후보 방향을 만들고 ProjectPointToNavigation으로 투영하는 별도 정책을 작성합니다.

Unreal Editor 작업

RandomSeed를 12345로 고정해 다섯 번의 Idle Action 로그를 기록합니다. Seed를 바꾸고 순서가 달라지는지 확인합니다.

5. 코드와 수학·AI가 동작하는 이유

010 구간에서 Wait가 06으로 60%, LookAround가 69로 30%, ShortPatrol이 910으로 10%를 차지합니다. 한 Roll에 누적 경계를 적용하므로 정확히 하나의 행동만 선택됩니다. 도달 가능한 Nav 위치를 요청해 벽 안이나 NavMesh 밖 순찰점을 피합니다.

6. 자주 하는 실수와 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

랜덤과 확률 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1다음 중 “랜덤과 확률”의 핵심 요약을 실제 상황에 맞게 적용한 것은 무엇인가요?
  2. 문제 2‘월드 임의 위치를 순찰점으로 사용’ 실수를 판단할 때 “랜덤과 확률” 강의가 제시한 기준은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

12강. 랜덤과 확률 미완료 상태