피드로 돌아가기
What 123 million simulated CS2 case openings taught me about modeling RNG
Dev.toDev.to
Backend

1.23억 건의 시뮬레이션을 통한 Floating Point 오차 제거 및 RNG 모델 최적화

What 123 million simulated CS2 case openings taught me about modeling RNG

graysonwerner100-commits2026년 5월 9일10intermediate

Context

부동 소수점 연산의 정밀도 한계로 인해 확률 합계가 1.0에 미치지 못하는 엣지 케이스 발생. 시각적 애니메이션 좌표 기반의 결과 도출 방식으로 인한 실제 확률 분포 왜곡 문제 직면.

Technical Solution

  • Floating Point 오차 원천 차단을 위해 가중치 모델을 정수 기반(parts-per-10000) 구조로 전환
  • 결과 값 선결정 후 UI를 맞추는 'Result-First' 애니메이션 파이프라인 설계로 시각적 편향 제거
  • Item Registry 기반의 데이터 분리를 통한 Case Definition의 결합도 해소 및 유지보수성 향상
  • 개별 Item의 min/max float 범위를 적용한 선형 보간법으로 실제 아이템 희귀도 정밀 구현
  • StatTrak 여부를 독립적인 Conditional Roll로 처리하여 범주형 확률 모델의 수치 드리프트 방지
  • CI 단계에서 가중치 합계 불변성(Invariant)을 검증하는 Unit Test 강제화

1. 확률 가중치 합계 검증 로직을 CI 파이프라인에 포함했는가

2. UI 애니메이션 좌표가 결과 값에 영향을 주는 구조는 아닌가

3. 부동 소수점 대신 정수 기반의 가중치(Integer Weights)를 사용 중인가

4. 아이템별 개별 제약 조건(min/max float)이 확률 모델에 반영되었는가

원문 읽기