• 微信
    咨询
    微信在线咨询 服务时间:9:00-18:00
    纵横数据官方微信 使用微信扫一扫
    马上在线沟通
  • 业务
    咨询

    QQ在线咨询 服务时间:9:00-18:00

    选择下列产品马上在线沟通

    纵横售前-老古
    QQ:519082853 售前电话:18950029581
    纵横售前-江夏
    QQ:576791973 售前电话:19906048602
    纵横售前-小李
    QQ:3494196421 售前电话:18965140883
    纵横售前-小智
    QQ:2732502176 售前电话:17750597339
    纵横售前-燕子
    QQ:609863413 售前电话:17750597993
    纵横值班售后
    QQ:407474592 售后电话:400-1886560
    纵横财务
    QQ:568149701 售后电话:18965139141

    售前咨询热线:

    400-188-6560

    业务姚经理:18950029581

  • 关注

    关于纵横数据 更多优惠活动等您来拿!
    纵横数据官方微信 扫一扫关注官方微信
  • 关闭
  • 顶部
  • 您所在的位置 : 首页 > 新闻公告 > php实现红包功能代码

    php实现红包功能代码

    本文主要和大家分享php实现的红包功能,主要以代码的形式和大家分享,由于是第一写红包对红包不是太了解,希望能帮助到大家。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    for ($i=1; $i < $p; ++$i) {
        $s2 = ($sum - ($p - $i) * 0.01)/($p - $i); 
        //echo $s2;die;
        $money = rand(1,$s2*100);
        $money = number_format($money/100,2,'.',',');
        $sum = $sum - $money;
        $wamp[$i] = $money;
         
    }
       //format_number(要转换的浮点数,要分隔的符号)
       echo "<hr/>";
       echo "<pre>";
        print_r($wamp);
        echo "<pre>";
     
     
    }
    //echo 2;

    可以基本实现红包功能 主要说说思想

    场景 有个同学群 里面有 50个同学 为了庆祝聚会 要发红包

    首先要求每个人必须领到红包 并且每个人领到红包概率基本相同

    那么 每个人领到红包概率 = (红包现有的金额 - (当前没领到红包人数) * 每人最少领到红包的金额 )/ 当前没领到红包人数

    $safe_total 每个人领到红包概率 $total 红包现有的金额 $min 人最少领到红包的金额

    那么 公式 就能 $safe_total = ($total - ($num - $i) * $min) / ($num - $i);

    代码不唯一 重要的就是 思想

    下面是参考代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    function getRedGift($total, $num = 10)
    {
    $min = 0.01;
    $wamp = array();
    $returnData = array();
    for ($i = 1; $i < $num; ++$i) {
    $safe_total = ($total - ($num - $i) * $min) / ($num - $i); //红包金额的最大值    为了是大部分个人获得的红包金额一定
    if ($safe_total < 0) break;
    $money = @mt_rand($min * 100, $safe_total * 100) / 100;//随机产生一个红包金额
    $total = $total - $money;//剩余红包总额
    $wamp[$i] = round($money, 2);//保留两位有效数字
    }
    $wamp[$i] = round($total, 2);
    $returnData['MoneySum'] = $wamp;
    $returnData['newTotal'] = array_sum($wamp);
    return $returnData;
    }
    //测试
    $data = getRedGift(100, 10);
    echo "<pre>";
     
     
    print_r($data);
     
     
    echo "<pre>";

    最新推荐


    微信公众帐号
    关注我们的微信