云南中建西部建设有限公司网站,修改wordpress的权限设置,电子商务公司简介模板,app拉新推广代理好的#xff0c;以下是一个用JavaScript编写的抽奖程序#xff0c;它根据给定的概率来决定奖项。我们将使用随机数生成器来模拟抽奖过程。
function drawPrize() {const prizes [{ name: 特等奖, probability: 0.00000001 },{ name: 一等奖, probability: 0.00000003 },{ n…好的以下是一个用JavaScript编写的抽奖程序它根据给定的概率来决定奖项。我们将使用随机数生成器来模拟抽奖过程。
function drawPrize() {const prizes [{ name: 特等奖, probability: 0.00000001 },{ name: 一等奖, probability: 0.00000003 },{ name: 二等奖, probability: 0.000004 },{ name: 三等奖, probability: 0.00001 },{ name: 大众奖, probability: 0.0001 },{ name: 阳光普照奖, probability: 0.45 },{ name: 谢谢惠顾, probability: 0.3 },{ name: 再来一次, probability: 0.24999996 } // 确保所有概率之和为1];const random Math.random();let cumulativeProbability 0;for (const prize of prizes) {cumulativeProbability prize.probability;if (random cumulativeProbability) {return prize.name;}}
}// 测试抽奖程序
function testDrawPrize(times) {const results {};for (let i 0; i times; i) {const prize drawPrize();if (results[prize]) {results[prize];} else {results[prize] 1;}}return results;
}// 抽奖次数let num20000000;
const results testDrawPrize(num);
console.log(results);// 可视化结果可选
for (const prize in results) {console.log(${prize}: ${(results[prize] / num* 100).toFixed(2)}%);
}说明
奖项和概率我们定义了一个数组 prizes其中每个对象包含一个奖项名称和对应的概率。随机数生成使用 Math.random() 生成一个介于 0 和 1 之间的随机数。累积概率我们遍历 prizes 数组并计算累积概率。如果生成的随机数小于或等于当前累积概率则返回对应的奖项。测试函数testDrawPrize 函数用于多次运行抽奖程序并统计每个奖项的出现次数。结果打印我们运行 testDrawPrize 函数 1000000 次并打印每个奖项的出现次数及其百分比。
注意概率的总和必须为1因此我在 再来一次 的概率中做了微调以确保总和为1。由于浮点数的精度问题这种微调是必要的。