js编写一个中奖程序
好的,以下是一个用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 num=20000000;
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。由于浮点数的精度问题,这种微调是必要的。
原文地址:https://blog.csdn.net/qq_37547964/article/details/142782683
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!