js實現自定義概率抽獎算法


當我們開發抽獎程序時,經常需要配置不同獎品的概率。

如:冰箱:30%,電腦:10%,洗衣機:50%。

可用以下函數實現:

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]                                 //否則減去當前的概率范圍,進入下一輪循環
      }
  }
} 

這個函數首先將輸入數組,如[30,10,50]進行相加,求出總和作為概率分母。

再取0到總和之間的隨機數,再確定這個數是在哪個區間上。

從數組的前面到后面,如果該數大於區間長度,則減去區間長度,繼續循環,直到找到該數所在區間,就返回對應的列表下標值。

最后,用

list[getResult(arr)]['name']

即可獲得該獎品的name值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM