當我們開發抽獎程序時,經常需要配置不同獎品的概率。
如:冰箱: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值。