概率算法(用于抽奖等场景)

let gifts = [
  {
    "name":"mac",
    "prop":1
  },
  {
     "name":"红米",
     "prop":10
  },
  {
     "name":"u盘",
    "prop":40
  },
  {
    "name":"香皂",
    "prop":49
  }
];
function getResult(arr){
   var leng = 0;
   for(var i=0; i<arr.length; i++){
     leng+=arr[i]                                     //获取总数
   }
   for(var i=0; i<arr.length; i++){
      var random = parseInt(Math.random()*leng);       //获取 0-总数 之间的一个随随机整数
      if(random<arr[i]){
         return i                                     //如果在当前的概率范围内,得到的就是当前概率
      } else {
         leng-=arr[i]                                 //否则减去当前的概率范围,进入下一轮循环
     }
  }
}

 let gArr = [];
 for(var i=0; i<gifts.length; i++){
    gArr.push(gifts[i]['prop'])
 }
 console.log(gifts[getResult(gArr)]['name'])    

 

posted @ 2023-01-01 15:22  爱跑步的乌龟  阅读(66)  评论(0编辑  收藏  举报