확률 (가중치) 로 추출 (표시)

1049 단어 자바 script
실제 응용 에서 추첨 시스템 에 부 딪 히 거나 광고 위치 가 가중치 에 따라 표시 할 수 있 습 니 다.확률 적 인 것 은 무 작위 함수 Math. random () 을 사용 해 야 합 니 다.
* 8195: 특정한 물품 의 확률 = 자신의 가중치 / 총 가중치, 부동 소수점 정밀도 문 제 를 피하 기 위해 우 리 는 확률 을 가중치 로 전환 하여 계산 하고 자신의 가중치 = 특정한 물품 의 확률 * 총 가중치.그래서 무 작위 로 추출 한 아 이 템 은 Math. random () * 총 가중치 입 니 다.
function roll(args){
    let sum_weight = 0;
    let result = null;

    const items = args.slice().map(item => (sum_weight += item.weight) && item);   //      
    const random = Math.ceil(Math.random() * sum_weight);               //          
    let start = 0;                                  //      ,     0

    while (items.length) {
      const item = items.shift();                   //        
      const end = start + item.weight;    //        
      if (random > start && random <= end) {        //            ,        ,    
        result = item;
        break;
      }
      start = end;                                  //        ,          
    }

    return result ? result.item : null;

}

좋은 웹페이지 즐겨찾기