본문 바로가기
게임 이야기/스타크래프트2

효과 있는지 모르는 최적화 가이드 - 비중 기준으로 확률 뽑기

by LillyLt 2018. 10. 7.

아래에 확률로 써있는 단어를 비중으로 교체합니다.

용어상 비중이란 말이 더 맞아요.

---


예를들어 상대 수치 비율로

저글링은 100 비중으로 

마린은 50 비중으로

질럿은 25 비중으로 뽑히게 하고 싶다.


할 경우 입니다.


다시말해 저글링이 100마리 나올동안 질럿은 25마리만 나오게 하고싶다고 할 경우입니다.


이걸 최대 공약수로 나누어 바꾸면

4:2:1 입니다.


근데 아래 예제는 그냥 유닛 만드는것 없이 디버그 메세지로만 대체함


----


일단 비중률갑을 만들어 줍시다.

만약 유닛뽑기를 만들려면 "유닛 유형" 배열도 만드시고 유닛 유형까지 같이 설정하셔야 됩니다.



설명을 하자면 위 초기화 완료후 아래 표처럼 됩니다.


배열 번호 

 비중

 비중 누적

 

 0

 10

 10

 

 1

 20

 30

 

 2

 30

 60

 

 3

 40

 100

 

 4

 50

 150

 


비중 합계값은 150으로 들어가구요.


---


실제로 봅기 과정의 트리거 입니다.



실제 작동시 예제를 들자면

뽑기값 : 55일 경우


 지역변수

배열 번호 

 비중 

 비중 누적

 비교 결과

 0

 0

 10

 10

 false, 55<10

 1

 1

 20

 30

 false, 55<30

 2

 2

 30

 60

 true, 55<60 

뽑기 작동 ,반복 정지

 

 3

 40

 100

 

 

 4

 50

 150

 



배열 번호 2번이 뽑혔습니다.


---


그리고 뽑힌 갯수 누적을 해보면


얼추 맞는군요.


----


최적화 하기


비중 50인것과 비중 10인것중 어느게 뽑히는 횟수가 많을까요?

50인게 많겠죠.


그러니 뽑힐 비중이 높은걸 배열번호 앞부분에 놓는게 좋습니다.


배열 번호 

 비중 

 비중 누적

 

 0

 50

 50

 

 1

 40

 90

 

 2

 30

 120

 

 3

 20

 140

 

 4

 10

 150

 



뭐 성능 차이가 별로 안나겠지만..

트리거 구성에 따라 역순 배열 해야할수도 있어요.


비중 확률.SC2Lib