PHP微信红包和抽奖代码

前段时间面试的一家公司的问题是PHP微信红包和抽奖代码的,当时恶补了一下代码的。下面是我自己整理出来的两份代码:

微信红包类的写法: 具体思路是,定义一个总钱数和一个人数,然后最小值为默认0.01元,然后进行循环,设置安全值是为了让后面的人都能拿到钱。具体的写法就不写了,自己看吧

// 微信红包算法
     header("content-type:text/html;charset=utf-8");
    $sum = 10;  //总价钱
    $num = 8 ;  //人数
    $min = 0.01;    //最少值
    for($i=1;$i<$num;$i++){
        $row = ($sum-($num-$i)*$min)/($num-$i);// 安全值
        $money = mt_rand($min*100,$row*100)/100;
        $sum -= $money;
        echo '第'.$i.'人,领取'.$money.'元,剩下'.$sum.'元
'; }

抽奖代码

// 抽奖
 header("content-type:text/html;charset=utf-8");
    function get_rand($arr){
        $arr_sum = array_sum($arr);
        $arr_rand = mt_rand(1,$arr_sum);
        foreach($arr as $key => $arr_num){
            $arr_sum -= $arr_num;
            if($arr_rand>$arr_sum){
                return $key;
            }
        }
    }
    $p = array(
        '0' => array('id'=>1,'info'=>'一等奖','v'=>1),
        '1' => array('id'=>2,'info'=>'二等奖','v'=>5),
        '2' => array('id'=>3,'info'=>'三等奖','v'=>10),
        '3' => array('id'=>4,'info'=>'四等奖','v'=>34)
        );
    foreach($p as $key => $value){
        $arr[$value['id']] = $value['v'];
    }
    $rid = get_rand($arr);
    $res['yes'] = $p[$rid-1]['info'];
    unset ($p[$rid-1]) ;
    shuffle ($p);

    for($i = 0; $i< count($p); $i++){
        $pr[]= $p[$i]['info'];
    }
    $res['no'] = $pr;
    var_dump($res);
联系我们

邮箱 626512443@qq.com
电话 18611320371(微信)
QQ群 235681453

Copyright © 2015-2024

备案号:京ICP备15003423号-3