function lottery() {
// 九宫格中奖概率
const probabilities = [10, 20, 30, 40, 50, 40, 30, 20, 10];
// 总概率值
const totalProbability = probabilities.reduce((sum, probability) => sum + probability, 0);
// 当前剩余概率值
let currentProbability = totalProbability;
// 中奖的格子索引
let winnerIndex = -1;
do {
// 在九宫格中随机选择一个格子
winnerIndex = Math.floor(Math.random() * probabilities.length);
// 检查当前概率是否大于 0
if (probabilities[winnerIndex] > 0) {
// 中奖,更新剩余概率值和选中格子的概率值
currentProbability -= probabilities[winnerIndex];
probabilities[winnerIndex] = 0;
// 检查是否有其他格子的概率大于 0,如果有则继续循环,否则结束循环
if (probabilities.some(probability => probability > 0)) {
continue;
} else {
break;
}
}
} while (currentProbability > 0);
// 返回中奖的格子索引
return winnerIndex;
}
使用方法:调用?lottery()
?函数即可获得中奖的格子索引。如果返回值为 -1,表示没有中奖。