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