设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 创业者 手机
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-02-23 14:41 所属栏目:121 来源:互联网
导读:下面来看一个我们在生活中常碰到的一个php实现微信红包的程序算法,希望这个程序对各位做微信开的朋友会带来帮助,最近一直在微信群里体验红包功能,红包类型有. 普通红包 拼手气红包两种 普通红包就不用多解析了,大锅饭原理,平分,拼手气红包讲的是手气(运气),
  下面来看一个我们在生活中常碰到的一个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{ //开源软件:Cuoxin.com
              $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;
  } 


    

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读