自学内容网 自学内容网

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)}%`);
}

说明:

  1. 奖项和概率:我们定义了一个数组 prizes,其中每个对象包含一个奖项名称和对应的概率。
  2. 随机数生成:使用 Math.random() 生成一个介于 0 和 1 之间的随机数。
  3. 累积概率:我们遍历 prizes 数组,并计算累积概率。如果生成的随机数小于或等于当前累积概率,则返回对应的奖项。
  4. 测试函数testDrawPrize 函数用于多次运行抽奖程序,并统计每个奖项的出现次数。
  5. 结果打印:我们运行 testDrawPrize 函数 1000000 次,并打印每个奖项的出现次数及其百分比。

注意,概率的总和必须为1,因此我在 再来一次 的概率中做了微调,以确保总和为1。由于浮点数的精度问题,这种微调是必要的。


原文地址:https://blog.csdn.net/qq_37547964/article/details/142782683

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!