캐릭터 js가 비권장 옵션이 되어도 나는 캐릭터 js를 쓸거야~~
아무튼, 랜덤을 사용해서 이벤트를 관리하는 챈럼들 많을거임,,,
근데, 만약 다음과 같은 상황을 생각해보자
난 일반 40% 고급 30% 희귀 25% 특급 4% 전설 1% 이런식으로 하고싶다고 해보자,,
그러면 {{random::일반::일반:: 이렇게 일반을 40개를 써야됨
그리고 여기서 일반을 45%로 바꾸고싶으면 나머지를 5개 지우고... 아무튼 귀찮다
const weightTable = { common: 40, uncommon: 35, rare: 25, epic: 4, legendary:1 }; |
이렇게 오브젝트를 만들어줌
function select(weightTable) { let totalWeight = Object.values(weightTable).reduce((sum, weight) => sum + weight, 0); let rand = Math.random() * totalWeight; for (let item in weightTable) { rand -= weightTable[item]; if (rand <= 0) { return item; } } } |
이렇게 해주면 각 가중치에 따라 랜덤이 정상작동하게 만들수있다
가중치 변경할때도 weightTable만 수정해주면 끝