在JavaScript中实现抽奖概率,通常涉及到随机数生成和概率计算。以下是一个简单的抽奖概率实现的示例:
Math.random()
函数生成一个0到1之间的随机数。// 定义奖品和对应的概率
const prizes = [
{ name: '一等奖', probability: 0.1 },
{ name: '二等奖', probability: 0.2 },
{ name: '三等奖', probability: 0.3 },
{ name: '谢谢参与', probability: 0.4 }
];
// 计算总概率
const totalProbability = prizes.reduce((sum, prize) => sum + prize.probability, 0);
// 抽奖函数
function drawPrize() {
const randomNum = Math.random() * totalProbability;
let cumulativeProbability = 0;
for (const prize of prizes) {
cumulativeProbability += prize.probability;
if (randomNum < cumulativeProbability) {
return prize.name;
}
}
// 如果由于浮点数精度问题没有匹配到,返回最后一个奖品
return prizes[prizes.length - 1].name;
}
// 测试抽奖函数
console.log(drawPrize());
function drawPrizeOptimized() {
const randomNum = Math.random() * totalProbability;
let left = 0;
let right = prizes.length - 1;
while (left < right) {
const mid = Math.floor((left + right) / 2);
cumulativeProbability = prizes.slice(0, mid + 1).reduce((sum, prize) => sum + prize.probability, 0);
if (randomNum < cumulativeProbability) {
right = mid;
} else {
left = mid + 1;
}
}
return prizes[left].name;
}
// 测试优化后的抽奖函数
console.log(drawPrizeOptimized());
通过上述方法,可以实现一个简单且高效的抽奖概率系统。
领取专属 10元无门槛券
手把手带您无忧上云