抽奖函数(给定概率)

作者: xilong | 来源:发表于2018-06-25 19:51 被阅读12次

说实话,这个标题还不好描述,举个例子:一等奖,1%;二等奖5%;三等奖:10%;谢谢惠顾:84%;
然后写一个随机抽奖的函数,抽出来的概率 符合上面定义。

let gift=['一等奖:宝马X6', '二等奖:苹果三件套', '三等奖:威戈背包', '谢谢惠顾!'];
//把概率转换为 正数组(一般乘分母就行了)
let probability = [1, 5, 10, 84];

// 这是 固定概率函数,方便理解但是不灵活
function goodluck(a, b) {
    var random = (1 + 5+ 10+ 84) * Math.random();   //因为 Math.random()是生成 [0,1) 随机数,左闭右开
    if(random <84){
        return a[3];
    } else if(random < 94){
        return a[2];
    } else if(random <99){
        return a[1];
    } else {
        return a[0];
    }
};

// 这个可以直接使用
function goodluckAll(obj, luck) {
    let sum = 0,
        factor = 0,
        random = Math.random();

    for(let i = luck.length - 1; i >= 0; i--) {
        sum += luck[i]; // 统计概率总和
    };
    random *= sum; // 生成概率随机数
    for(let i = luck.length - 1; i >= 0; i--) {
        factor += luck[i];
        if(random < factor) return obj[i];
    };
};

// 试一试
let gift=['一等奖:宝马X6', '二等奖:苹果三件套', '三等奖:威戈背包', '谢谢惠顾!'];
let probability = [1, 5, 10, 84];
console.log(goodluckAll(gift, probability));

相关文章

  • 抽奖函数(给定概率)

    说实话,这个标题还不好描述,举个例子:一等奖,1%;二等奖5%;三等奖:10%;谢谢惠顾:84%;然后写一个随机抽...

  • 学习笔记TF009:对数几率回归

    logistic函数,也称sigmoid函数,概率分布函数。给定特定输入,计算输出"success"的概率,对回题...

  • 极大似然估计

    1. 什么是似然函数? 本质是关于随机数X的概率密度函数,只不过没有给定参数.概率密度函数反映的是给定值 的事件发...

  • 柚币抽奖压测报告

    1. 概率验证: 抽奖概率主要包括2个方面: 奖品概率:后台设置奖品的获奖概率,验证抽奖获得的奖品是否符合概率分布...

  • 10_4随机函数练习题

    给定一个等概率随机产生15的随机函数,除此之外,不能使用任何额外的随机机制,请实现等概率随机产生17的随机函数。(...

  • PHP概率抽奖

    说明 大多数活动或游戏都会有转盘等抽奖活动,以下方法实现简单的生成转盘奖品 逻辑代码 结果:谢谢参与!

  • 晚会抽奖概率

    我以为可以参与抽奖的只有到场的老师们,结果!是在线全杭州的老师! 整个杭州的好几千的老师,再挑选100个中奖名额…...

  • 概率论与统计推断(二) ------ 随机变量及其分布

    一.随机变量(实际上是函数) 概率论的目的:给定随机试验的数据生成过程,研究数据的性质, 如概率分布(下面的二/三...

  • 记录一次基于redis抽奖固定奖品数量奖品分批次投放,超过奖品数

    需求 最近公司搞了个问卷调查的活动,用户填完问卷就能获得一次抽奖的就会,本来抽奖都是按概率来抽奖的,这种按概率的晚...

  • 6.概率分布

    概率分布函数 概率分布函数(Probability Distribution Function,PDF):概率分布...

网友评论

    本文标题:抽奖函数(给定概率)

    本文链接:https://www.haomeiwen.com/subject/hgquyftx.html