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或者谢谢参与,在操作表的时候要锁表,防止并发,并且异步通知用户中奖

  • 相关阅读:
    layui穿梭框右侧增加上移下移功能
    java.lang.NullPointerException出现的几种原因:
    springboot+thymeleaf+mybatis 基础学习
    Vue 生命周期扫盲
    Token 认证(Asp.Net)
    从具体化“system.decimal”类型到“system.string”类型的指定强制转换无效
    【C#】委托和Lambda表达式
    Visual Studio 2017添加visionPro控件
    从WinForm程序中看委托和事件
    西门子PLC通讯-仿真环境搭建
  • 原文地址:https://www.cnblogs.com/hubudong/p/9511781.html
Copyright © 2011-2022 走看看