根据1-9权重值等级计算广告出现的概率

现在有3个广告

adid     rank

1        3

2        5

3        7

广告的编号唯一,分别是1,2,3  权重值是 rank字段 

1号广告的权重为3

2号广告权重为5

3号广告权重7

依此类推。

现在要设计一种方法,能够根据权重值来分配广告展现的机会,权重值越高,广告展现的机会越多。

$randstr="122333444455555666666777777788888888999999999";
        $randnum=mt_rand(0,44);//取随机值
        $rannum=$randstr[$randnum];
给定一个字符串$randstr 该字符串长度为45,其中1出现1次,2出现2次,3出现3次,9出现9次。分别对应1-9的权重等级。

然后我们从0-44 中随机取一个数字

再从$randstr 中取对应这个数字的字符。

由于权重值越高,对应的数字越多,所以越容易被命中。

现在假设我们的广告都存放在 $adlist 数组中,其结构为:$adlist[adid]=>rank

然后我们用 array_keys($adlist,$rannum); 从adlist数组中查找rank值等于之前取出来的随机字符的key值.

然后我们就可以对这些key值的广告进行展示了。

转载于:https://my.oschina.net/cxz001/blog/104922

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值