說實話,這個標題還不好描述,舉個例子:一等獎躯嫉,1%;二等獎5%雳灵;三等獎:10%;謝謝惠顧:84%闸盔;
然后寫一個隨機抽獎的函數(shù)悯辙,抽出來的概率 符合上面定義。
let gift=['一等獎:寶馬X6', '二等獎:蘋果三件套', '三等獎:威戈背包', '謝謝惠顧迎吵!'];
//把概率轉(zhuǎn)換為 正數(shù)組(一般乘分母就行了)
let probability = [1, 5, 10, 84];
// 這是 固定概率函數(shù)躲撰,方便理解但是不靈活
function goodluck(a, b) {
var random = (1 + 5+ 10+ 84) * Math.random(); //因為 Math.random()是生成 [0,1) 隨機數(shù),左閉右開
if(random <84){
return a[3];
} else if(random < 94){
return a[2];
} else if(random <99){
return a[1];
} else {
return a[0];
}
};
// 這個可以直接使用
function goodluckAll(obj, luck) {
let sum = 0,
factor = 0,
random = Math.random();
for(let i = luck.length - 1; i >= 0; i--) {
sum += luck[i]; // 統(tǒng)計概率總和
};
random *= sum; // 生成概率隨機數(shù)
for(let i = luck.length - 1; i >= 0; i--) {
factor += luck[i];
if(random < factor) return obj[i];
};
};
// 試一試
let gift=['一等獎:寶馬X6', '二等獎:蘋果三件套', '三等獎:威戈背包', '謝謝惠顧击费!'];
let probability = [1, 5, 10, 84];
console.log(goodluckAll(gift, probability));