说实话,这个标题还不好描述,举个例子:一等奖,1%;二等奖5%;三等奖:10%;谢谢惠顾:84%;
然后写一个随机抽奖的函数,抽出来的概率 符合上面定义。
let gift=['一等奖:宝马X6', '二等奖:苹果三件套', '三等奖:威戈背包', '谢谢惠顾!'];
//把概率转换为 正数组(一般乘分母就行了)
let probability = [1, 5, 10, 84];
// 这是 固定概率函数,方便理解但是不灵活
function goodluck(a, b) {
var random = (1 + 5+ 10+ 84) * Math.random(); //因为 Math.random()是生成 [0,1) 随机数,左闭右开
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]; // 统计概率总和
};
random *= sum; // 生成概率随机数
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));
网友评论