美文网首页日常积累数据结构和算法分析程序员
微信大转盘抽奖奖项概率算法分析

微信大转盘抽奖奖项概率算法分析

作者: IT小C | 来源:发表于2017-05-27 14:27 被阅读1756次

前段时间公司里为了推广微信公众号吸粉,需要在公众号菜单里增加一个大转盘抽奖的活动,在活动现场手机上抽到什么奖品就是什么,当然由于部分奖品的数量有限,所以需要对每个奖项设置中奖概率,根据每个奖品的份数来设置中奖概率。但是前端给游客看到的转盘里不能显示有概率大小之分,要让游客感觉到每个奖品的概率都是一样的,这样就需要将转盘的渲染和中奖计算算法分离。

微信大转盘

下面是我想到的两种抽奖奖项概率的算法,两种算法各有利弊,需要结合实际情况来看选择哪种。

算法一
第一种算法是通过设置一个数组设定每个奖项对应的数量,生成范围区间,然后计算出总数量,通过在0~总数量中生成随机数来判断当前生成的随机数是在哪个区间范围内,就此来判断出对应的奖项。
这种算法的好处是在整个过程中,每一次的抽奖各奖项概率都是相同的,保证了抽奖的公平性,缺点是如果最大概率的奖品抽完了,根据概率论原理,之后会出现一直抽到但奖品没有的情况,所以这种算法适用于高概率奖品数量大于参与人数的情况。
下面是这种算法的具体代码

//动态添加大转盘的奖品与奖品区域背景颜色和数量
turnplate.restaraunts = ["卡套", "面巾纸","宝珠笔","卡通风扇","护照夹","便携镜"];
turnplate.colors = ["#FFF4D6", "#FFFFFF", "#FFF4D6", "#FFFFFF", "#FFF4D6", "#FFFFFF"];
turnplate.rate = [799,100,20,39,50,25];
//获取随机数(奖品个数范围内)
var maxlength = 0;
for(var i in turnplate.rate){
    maxlength += turnplate.rate[i];
}
var item = '';
var rate_item = rnd(0,maxlength);
//判断当前随机数在哪个范围内
var startI = 0;
var endI = 1;
for(var i in turnplate.rate){
    endI = endI + turnplate.rate[i];
    if(rate_item > startI && rate_item < endI){
        item = (Number(i)+1);
    }
    startI = startI + turnplate.rate[i];
}

算出奖品序号item之后,根据item计算对应的转盘角度,实现动画效果后将转盘指针停在计算出的角度内即可。

算法二
第二种算法是需要后端服务器支持的,在游客抽奖之后通过异步操作在后端数据库生成一条奖品记录,在下次抽奖时计算数据库中的奖品记录数,如果已抽取的奖品记录数/总记录数大于等于该奖品的概率,则抽奖代码需执行continue操作直到抽到小于奖品概率的奖项为止。这种算法的好处是可以保证奖品的数量,如果奖品没有了,那么就到了该奖品的概率峰值,就不会再抽到该奖品。这种算法的缺点是越前面抽的人中大奖的概率越高,越到后面概率逐渐趋于奖品的实际概率,存在一定的不公平性。这种算法一般适用于对于奖品的份数小于抽奖人数的情况,就是奖品都要发完的情况。

第二种算法的具体代码实现比较简单,这里就不具体列出了,有兴趣的同学可以自己实现看看。

相关文章

  • 微信大转盘抽奖奖项概率算法分析

    前段时间公司里为了推广微信公众号吸粉,需要在公众号菜单里增加一个大转盘抽奖的活动,在活动现场手机上抽到什么奖品就是...

  • php实现刮刮卡大转盘抽奖概率

    php实现刮刮卡大转盘抽奖概率 本文实例为大家分享了php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法,用法很简单...

  • 【Java 实战】实现大转盘抽奖

    项目场景 实现一个大转盘抽奖的功能,能后台自定义奖项,各奖项中奖概率,奖品数量,当日抽奖最大次数等。 一、设计思路...

  • 大转盘抽奖概率算法

    大转盘方式的抽奖是经常见的,,最近在做了一个抽奖的功能,其中最重要的就是概率,概率的算法大同小异,,为保证每个奖品...

  • 微信小程序幸运大转盘制作教程

    幸运大转盘抽奖方式是我见过最常用的抽奖方式了,这种方式简单,直接,让人看着兴奋。那么,幸运大转盘微信小程序怎么制作...

  • php抽奖概率算法(适合大转盘等概率)

  • 微信小程序大转盘抽奖

    微信小程序大转盘抽奖 说明看到过太多骗点击量的大转盘抽奖,也写一个玩玩 需求 一个转盘界面 闪动的小点 奖品背景颜...

  • 活动策划

    模型 一活动创意搜集 线下 线上搜集 1 抽奖 大转盘 老虎机 砸金蛋 微博微信 论坛回复盖楼 2竞猜 猜事...

  • 一个经典的指定概率的抽奖算法

    公司需要做一个抽奖的页面,奖项的概率要能控制。发现一个经典算法,记录一下。 首先定义一个数组 [10,20,30,...

  • iris 抽奖实例6

    大转盘 固定几个奖品,不同的中奖概率或者总数量限制 每一次转动抽奖,后端计算出这次抽奖的中奖情况,并返回对应的奖品...

网友评论

    本文标题:微信大转盘抽奖奖项概率算法分析

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