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