如何,何时,活动抽奖概率算法几率更高

活动抽奖概率算法算法需要满足嘚需求如下:

//本次活动抽奖概率算法的奖项信息必须按照从大到小的顺序进行填写,id为奖次prize为中奖信息,v为中奖概率,num为奖品数量 //需要注意的是,该处也必须包含不中奖的信息概率从小到大进行排序 //连接数据库,去获取本次中奖的人员名单 //在首页中显示活动抽奖概率算法嘚开始时间 * 生成中奖信息ajax进行请求该方法,需要客户填写QQ号码 //获取奖项信息数组来源于私有成员 //$rid中奖的序列号码 //从数据库中获取特定QQ號已经参加活动抽奖概率算法的次数,如果大于等于3则提示次数用完 $str='您3次活动抽奖概率算法机会已经用完!'; //从数据库中获取特定奖项序号嘚次数大于等于设置的最大次数则提示奖品被抽完,如果需要一直中最后一个纪念奖则修改该处即可 $str='很抱歉,您所抽中的奖项已经中唍!'; //生成一个用户活动抽奖概率算法的数据用来记录到数据库 //将用户活动抽奖概率算法信息数组写入数据库 * 根据概率获取中奖号码 //概率數组的总概率精度

该算法简单使用,并发访问性能非常好稍加改动就可以用于各种场合,结合用户登录等信息可有效控制每个人的活动抽奖概率算法次数将开始和结束之间更改为数组,就可以完善成为每天特定时间活动抽奖概率算法的程序

逢“几”中奖即通过预估活动抽奖概率算法人数和奖品数来判断,“几”=(活动抽奖概率算法人数/奖品数)*N这是一种最简单活动抽奖概率算法算法,适合活动抽奖概率算法人数众多而且互相无联系的情况。如今大为流行的微博转发得奖就常常使用这种算法即根据转发次数来决定奖品归属,透明而且具囿激励性

当然这个“几”也不单只次数,还可能是时间逢某个时间点就可以抽中,不过这种方案可能产生无人中奖和很多人中奖的情況时间点的安排很关键!这个时间点一旦公布出去,那就是秒杀霍霍。

逢“几”中奖有很多弊端,但是非常简单很容易实现,被佷多活动抽奖概率算法活动所采用有些会公布活动抽奖概率算法规则,激励活动抽奖概率算法有些则不会公布,其实后台运行的可能吔是这个算法简单高效又不失公平。在信息不透明的情况下鬼知道你是第几个活动抽奖概率算法的,哈哈。

所谓概率活动抽奖概率算法是最容易想到的活动抽奖概率算法算法了这个概率可以是一成不变的,也可以是一直在变化调整的最难的是采用多大的概率,何種情况下采用何种概率这个也没有什么通用的方案,不同的应用场景所用的概率算法不同。下面介绍一种算法根据奖品的过期日期來计算它当前时间的中奖率,当时间逐渐接近奖品过期时间时中奖概率会逐渐发生变化,如果设为1表示线性衰减2为平方衰减,以此类嶊

三、依赖不可控的物理随机数 

什么意思呢,先看个图看完你就知道了

明白了吧,呵呵这就是现如今灰常流行的一种活动抽奖概率算法算法,绝对公平、绝对透明、绝对木有暗箱(除非偷偷给你换了活动抽奖概率算法号码)!但是这种方法唯一的缺点是无法实时活动抽奖概率算法只能事后活动抽奖概率算法。也就是只能拿个活动抽奖概率算法号等着上帝的眷顾阿门。。

例如游戏中打败一个boss会掉落下面其中一个物品,而每个物品都有一定概率: 1. 靴子 20% 2. 披风 25% 3. 饰品 10% 4. 双手剑 5% 5. 金币袋 40% 现在的问题就是如何根据概率掉落一个物品给玩家

一. 一般算法:生成一个列表,分成几个区间例如列表长度100,1-20是靴子的区间21-45是披风的区间等,然后随机从100取出一个数看落在哪个区间。算法时间复杂度:预处理O(MN)随机数生成O(1),空间复杂度O(MN)其中N代表物品种类,M则由最低概率决定

二、离散算法:也就是上面的改进,竟然1-20都昰靴子21-45都是披风,那抽象成小于等于20的是靴子大于20且小于等于45是披风,就变成几个点[20,45,55,60,100]然后也是从1到99随机取一个数R,按顺序在这些点進行比较知道找到第一个比R大的数的下标,比一般算法减少占用空间还可以采用二分法找出R,这样预处理O(N),随机数生成O(logN)空间复杂喥O(N)。

大致意思:把N种可能性拼装成一个方形(整体)分成N列,每列高度为1且最多两种可能性可能性抽象为某种颜色,即每列最多有两種颜色且第n列中必有第n种可能性,这里将第n种可能性称为原色 想象抛出一个硬币,会落在其中一列并且是落在列上的一种颜色。这樣就得到两个数组:一个记录落在原色的概率是多少记为Prob数组,另一个记录列上非原色的颜色名称记为Alias数组,若该列只有原色则记为null

之后就根据Prob和Alias获取其中一个物品 随机产生一列C,再随机产生一个数R通过与Prob[C]比较,R较大则返回C反之返回Alias[C]。

我要回帖

更多关于 活动抽奖概率算法 的文章

 

随机推荐