곤약노트

시뮬레이션 (Simulation) 개요 #2 Randomness and Pseudorandom Number Generation (PRNG) 본문

Data Science/Simulation (시뮬레이션)

시뮬레이션 (Simulation) 개요 #2 Randomness and Pseudorandom Number Generation (PRNG)

곤약처럼 부드럽게, 쫀쫀하게 2025. 6. 11. 09:00

1. Randomness의 정의와 필요성

  • Randomness (무작위성): 예측할 수 없는 이벤트의 발생 또는 값의 생성.
  • 시뮬레이션에서의 역할:
    • 불확실성 모델링 (e.g., 고객 도착 시간, 서비스 시간)
    • 복잡한 행동과 예측할 수 없는 이벤트 시뮬레이션
    • 몬테카를로 시뮬레이션, 확률적 모델링 등에 필수적

 

2. Pseudorandom Numbers (PRNs)

  • 정의:
    • 결정론적 알고리즘을 통해 생성된, 통계적으로 무작위처럼 보이는 숫자.
    • 진정한 랜덤(random) 값은 아니지만, 통계적 특성상 유사함.
  • 생성 방법:
    • Uniform (0, 1) 분포로 생성됨.
    • 이를 변환하여 다양한 분포 (정규분포, 지수분포 등)로 확장 가능함.

 

3. Linear Congruential Generator (LCG)

 

4. Desert Island Generator (Park-Miller LCG)

 

5. PRNG를 통한 다양한 확률 분포 생성

 

6. Inverse Transform Method (역변환법)★

-  확률분포를 따르는 난수를 생성하는 가장 기본적이고 중요한 방법

 

[Problem]

컴퓨터는 기본적으로 (0,1) 사이의 균등한 난수밖에 못 만듦.

하지만 우리는 Exponential, Normal, Poisson 같은 다양한 분포의 난수가 필요

→ 이 때 쓰는 것이 Inverse Transform Method

 

핵심 아이디어
균등분포 U ~ Unif(0, 1)을 원하는 분포 X로 바꾸려면, 원하는 분포의 누적분포함수 (cdf) F(x)의 역함수 F-1(U)를 이용하면 된다

 

$$X = F^{-1}(U)$$

 

이때 X는 우리가 생성하고자하는 분포의 Random Variable