> php教程 > php手册 > php实现微信红包的程序算法

php实现微信红包的程序算法

WBOY
풀어 주다: 2016-05-23 08:33:36
원래의
1481명이 탐색했습니다.

下面来看一个我们在生活中常碰到的一个php实现微信红包的程序算法,希望这个程序对各位做微信开的朋友会带来帮助,最近一直在微信群里体验红包功能,红包类型有.

•普通红包 •拼手气红包两种

普通红包就不用多解析了,大锅饭原理,平分,拼手气红包讲的是手气(运气),有人可以抢到很多,有人抢的少得可怜,当然也不是先抢就一定多,说到底了就是随机.

想了想,自己写写看,能不能实现类似的功能(不敢说是算法).

// $bonus_total 红包总金额 
// $bonus_count 红包个数 
// $bonus_type 红包类型 1=拼手气红包 0=普通红包 
function randBonus($bonus_total=0, $bonus_count=3, $bonus_type=1){ 
    $bonus_items    = array(); // 将要瓜分的结果 
    $bonus_balance  = $bonus_total; // 每次分完之后的余额 
    $bonus_avg      = number_format($bonus_total/$bonus_count, 2); // 平均每个红包多少钱 
    $i              = 0; 
    while($i<$bonus_count){ 
        if($i<$bonus_count-1){ 
            $rand           = $bonus_type?(rand(1, $bonus_balance*100-1)/100):$bonus_avg; // 根据红包类型计算当前红包的金额 
            $bonus_items[]  = $rand; 
            $bonus_balance  -= $rand; 
        }else{  
            $bonus_items[]  = $bonus_balance; // 最后一个红包直接承包最后所有的金额,保证发出的总金额正确 
        } 
        $i++; 
    } 
    return $bonus_items; 
}
로그인 후 복사

好吧,我们现在来体验一下:

// 发3个拼手气红包,总金额是100元 
    $bonus_items    = randBonus(100, 3, 1); 
    // 查看生成的红包 
    var_dump($bonus_items); 
    // 校验总金额是不是正确,看看微信有没有坑我们的钱 
    var_dump(array_sum($bonus_items)); 
另一个使用数组实现的版本,原理差不多:
function sendRandBonus($total=0, $count=3, $type=1){ 
    if($type==1){ 
        $input          = range(0.01, $total, 0.01); 
        if($count>1){ 
            $rand_keys  = (array) array_rand($input,  $count-1); 
            $last       = 0; 
            foreach($rand_keys as $i=>$key){ 
                $current    = $input[$key]-$last; 
                $items[]    = $current; 
                $last       = $input[$key]; 
            } 
        } 
        $items[]        = $total-array_sum($items); 
    }else{ 
        $avg            = number_format($total/$count, 2); 
        $i              = 0; 
        while($i<$count){ 
            $items[]    = $i<$count-1?$avg:($total-array_sum($items)); 
            $i++; 
        } 
    } 
    return $items; 
}
로그인 후 복사


本文链接:

收藏随意^^请保留教程地址.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿