欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

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

程序员文章站 2022-04-06 10:01:33
...
下面来看一个我们在生活中常碰到的一个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

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

// 发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


本文链接:

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