使用到了do-while的方法
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,表示没有中奖。