캐릭터 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만 수정해주면 끝