/** * * @param vWeight 權重的數組:例如【1,1,1,1,1】 * @returns //注意:返回的下標加1(佔第幾個) */ public static GetPrize(vWeight: number[]): number { //計算權重之和 prev 是前一次累加後的數值,currVal 是本次待加的數值 let weightSum = vWeight.reduce((prev, currVal) => { return prev + currVal; }, 0); let random = Math.ceil(Math.random() * weightSum); console.log("random ---->" + random); let count = 0; for (let i = 0; i < vWeight.length; i++) { count += vWeight[i]; if (random <= count) { return i + 1; } } }