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 函数来执行抽奖,并将结果输出到控制台。