zoukankan      html  css  js  c++  java
  • 红包算法

    在所有奖品之中随机抽样,抽样越大,则概率也平均

    //抽奖奖金位置设置
    $prize_array = array(
    508 => 1,
    509 => 2,
    510 => 3,
    511 => 8,
    512 => 4,
    513 => 7,
    514 => 6,
    515 => 5,
    );

    /*获取每一个奖品的概率*/
    function get_rate($arr){
    foreach ($arr as $key => $val) {
    $arr[$val['id']] = ($val['num'] - $val['numout'])>0?($val['num'] - $val['numout']):0; //随着被抽取的数量减少,其他的概率变大
    }
    return $arr;
    }

    /*随机数函数*/
    function get_rand($proArr) {
    $result = '';
    //概率数组的总概率精度
    $proSum = array_sum($proArr);
    //概率数组循环
    foreach ($proArr as $key => $proCur) {
    $randNum = mt_rand(1, $proSum);
    if ($randNum <= $proCur) {
    $result = $key;
    break;
    } else {
    $proSum -= $proCur;
    }
    }
    unset ($proArr);
    return $result;
    }

    2.

    pointlevel=array(5,10,20,30,50,100,200); //阶梯抽奖,每次扣除的积分不同。第一次5分,第二次10分。
    $jpid2pid=array(484=>1,488=>2,485=>3,487=>4,489=>5,486=>6,490=>7,0=>8); //奖金位置

    function ztchoujiang($point_app,$todaynum,$alldaynum,$thisjpid,$have490) {
    //不同分数等级要给不同的中奖概率。
    $lvlist=array(
    1=>array(1,3,3,0,0,1,0),
    2=>array(3,1,3,3,0,1,0),
    3=>array(1,0,1,0,3,0,2),
    4=>array(3,0,1,1,0,1,0),
    5=>array(1,0,1,0,1,0,1),
    6=>array(3,1,0,3,1,0,0),
    7=>array(1,0,1,0,1,0,1)
    );
    $lv=intval($lvlist[count($alldaynum)+($todaynum>0?0:1)][$todaynum]);

    if ($lv==0) $thisjpid=array(484); //没抽到 改为只有0.1

    if ($lv==2 and $have490) $thisjpid[]=490;//有机会抽到5元
    if ($lv==3) $thisjpid=array(488,487,486,485,484); //有机会抽除5元和2元的

    return $thisjpid[array_rand($thisjpid)];
    }

    获取到id之后要判断每一种红包的份额是否发完,发完则替换成最低金额id或者谢谢参与,在操作表的时候要锁表,防止并发,并且异步通知用户中奖

  • 相关阅读:
    Sublime Text 3 绝对神器
    spring 笔记3: Spring 多环境配置文件切换
    elk-logstash: window下指定jdk目录
    通过slf4j/log4j的MDC/NDC 实现日志追踪
    spring 笔记2:Spring MVC : Did not find handler method for 问题的解决
    mysql一机多实例安装记录
    Java:通过反射复制父类字段到子类。
    mybatis研究:select性能对比
    spring " expected single matching bean but found 2" 问题一例。
    数组去重复
  • 原文地址:https://www.cnblogs.com/hubudong/p/9511781.html
Copyright © 2011-2022 走看看