当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-15 11:10:34 浏览: 评论:0 

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

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

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

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

  1. // $bonus_total 红包总金额 
  2. // $bonus_count 红包个数 
  3. // $bonus_type 红包类型 1=拼手气红包 0=普通红包 
  4. function randBonus($bonus_total=0, $bonus_count=3, $bonus_type=1){ 
  5.     $bonus_items    = array(); // 将要瓜分的结果 
  6.     $bonus_balance  = $bonus_total// 每次分完之后的余额 
  7.     $bonus_avg      = number_format($bonus_total/$bonus_count, 2); // 平均每个红包多少钱 
  8.     $i              = 0; 
  9.     while($i<$bonus_count){ 
  10.         if($i<$bonus_count-1){ 
  11.             $rand           = $bonus_type?(rand(1, $bonus_balance*100-1)/100):$bonus_avg// 根据红包类型计算当前红包的金额 
  12.             $bonus_items[]  = $rand
  13.             $bonus_balance  -= $rand
  14.         }else//开源软件:phpfensi.com 
  15.             $bonus_items[]  = $bonus_balance// 最后一个红包直接承包最后所有的金额,保证发出的总金额正确 
  16.         } 
  17.         $i++; 
  18.     } 
  19.     return $bonus_items

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

  1. // 发3个拼手气红包,总金额是100元 
  2. $bonus_items    = randBonus(100, 3, 1); 
  3. // 查看生成的红包 
  4. var_dump($bonus_items); 
  5. // 校验总金额是不是正确,看看微信有没有坑我们的钱 
  6. var_dump(array_sum($bonus_items)); 

另一个使用数组实现的版本,原理差不多:

  1. function sendRandBonus($total=0, $count=3, $type=1){ 
  2.     if($type==1){ 
  3.         $input          = range(0.01, $total, 0.01); 
  4.         if($count>1){ 
  5.             $rand_keys  = (arrayarray_rand($input,  $count-1); 
  6.             $last       = 0; 
  7.             foreach($rand_keys as $i=>$key){ 
  8.                 $current    = $input[$key]-$last
  9.                 $items[]    = $current
  10.                 $last       = $input[$key]; 
  11.             } 
  12.         } 
  13.         $items[]        = $total-array_sum($items); 
  14.     }else
  15.         $avg            = number_format($total/$count, 2); 
  16.         $i              = 0; 
  17.         while($i<$count){ 
  18.             $items[]    = $i<$count-1?$avg:($total-array_sum($items)); 
  19.             $i++; 
  20.         } 
  21.     } 
  22.     return $items

Tags: php微信红包 php红包程序

分享到: