do while实现九宫格概率抽奖

function lottery() {
  const prizes = [
    { name: 'prize 1', probability: 0.1 },
    { name: 'prize 2', probability: 0.2 },
    { name: 'prize 3', probability: 0.3 },
    { name: 'prize 4', probability: 0.05 },
    { name: 'prize 5', probability: 0.15 },
    { name: 'prize 6', probability: 0.1 },
    { name: 'prize 7', probability: 0.08 },
    { name: 'prize 8', probability: 0.01 },
    { name: 'prize 9', probability: 0.01 }
  ];

  let selectedPrize;
  let randomNum;
  
  do {
    randomNum = Math.random();
    
    for (let i = 0; i < prizes.length; i++) {
      if (randomNum <= prizes[i].probability) {
        selectedPrize = prizes[i];
        break;
      } else {
        randomNum -= prizes[i].probability;
      }
    }
  } while (!selectedPrize);
  
  return selectedPrize;
}

console.log(lottery());

在循环中,我们使用 do-while 结构。首先,生成一个随机数 randomNum,它是一个0到1之间的浮点数。

然后,我们使用一个 for 循环遍历奖品列表。在每次循环中,我们将随机数与当前奖品的概率进行比较。如果随机数小于等于当前奖品的概率,表示抽中了该奖品,我们将其赋值给 selectedPrize 变量,并跳出循环。否则,我们将随机数减去当前奖品的概率,继续进行下一轮循环,以便进行下一次比较。

当选中奖品时,即 selectedPrize 不为空时,循环结束。

最后,我们调用 lottery 函数来执行抽奖,并将结果输出到控制台。

你可能感兴趣的:(前端,javascript,开发语言)