实现九宫格概率抽奖(与往常不同的方法哦)

发布时间:2024年01月03日

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

文章来源:https://blog.csdn.net/m0_74359467/article/details/134782453
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。