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

PHP实现微信红包金额拆分试玩的算法示例

发布:smiling 来源: PHP粉丝网  添加日期:2021-09-06 20:22:18 浏览: 评论:0 

本篇文章主要介绍了PHP实现微信红包金额拆分试玩的算法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧。

本文介绍了PHP实现微信红包金额拆分试玩的算法示例,分享给大家,有兴趣的可以看一下:

  1. <?php 
  2. // 新年红包金额拆分试玩 
  3.  
  4. class CBonus 
  5.   public $bonus;//红包 
  6.   public $bonus_num;//红包个数 
  7.   public $bonus_money;//红包总金额 
  8.   public $money_single_max;//单个红包限额 
  9.     
  10.   public function __construct(){ 
  11.     $this->bonus_num = 10; 
  12.     $this->bonus_money = 200; 
  13.     $this->money_single_max = 60; 
  14.   } 
  15.  
  16.   private function randomFloat($min = 0, $max = 1) { 
  17.     $mt_rand = mt_rand(); 
  18.     $mt_getrandmax = mt_getrandmax(); 
  19.     echo 'mt_rand=' . $mt_rand . ', mt_getrandmax=' . $mt_getrandmax . '<hr/>'
  20.     return $min + $mt_rand / $mt_getrandmax * ($max - $min); 
  21.   } 
  22.   //计算 
  23.   public function compute() 
  24.   { 
  25.     $this->bonus = array(); 
  26.     $bonus_money_temp = $this->bonus_money; 
  27.     $money_single_max = $this->money_single_max; 
  28.     $i = 1; 
  29.     while($i < $this->bonus_num) 
  30.     { 
  31.       if ($money_single_max > $bonus_money_temp
  32.       { 
  33.         $money_single_max = floatval(sprintf("%01.2f"$bonus_money_temp / 2));//剩余金额不够分时,把剩余金额的一半作为备用金 
  34.       } 
  35.       $bonus_money_rad = $this->randomFloat(0.01, $money_single_max);//一个红包随机金额 最小的1分钱 
  36.       $bonus_money_rad = floatval(sprintf("%01.2f"$bonus_money_rad)); 
  37.       $bonus_money_temp = $bonus_money_temp - $bonus_money_rad ;//待分配的总剩余金额 
  38.       $bonus_money_temp = floatval(sprintf("%01.2f"$bonus_money_temp)); 
  39.       $this->bonus[] = $bonus_money_rad
  40.       //echo $bonus_money_rad . ',' . $bonus_money_temp . '<hr/>'; 
  41.       $i++; 
  42.     } 
  43.     $this->bonus[] = $bonus_money_temp;//分配剩余金额给最后一个红包 
  44.   } 
  45.   //打印 
  46.   public function output(){ 
  47.     $total = 0; 
  48.     foreach($this->bonus as $k => $v
  49.     { 
  50.       echo '红包' . ($k+1) . '=' . $v . '<br/>'
  51.       $total += $v
  52.     } 
  53.     echo '红包总金额:'.$total
  54.   } 
  55.  
  56. $CBonus = new CBonus(); 
  57. $CBonus->compute(); 
  58. $CBonus->output(); 
  59. ?> 

演示结果:

  1. 红包1=12.36 
  2. 红包2=24.37 
  3. 红包3=42.71 
  4. 红包4=36.92 
  5. 红包5=25.84 
  6. 红包6=23.17 
  7. 红包7=15.92 
  8. 红包8=1.35 
  9. 红包9=7.75 
  10. 红包10=9.61 
  11. 红包总金额:200 
  12.  
  13. 红包1=24.59 
  14. 红包2=17.66 
  15. 红包3=29.67 
  16. 红包4=32.34 
  17. 红包5=12.67 
  18. 红包6=37.15 
  19. 红包7=17.41 
  20. 红包8=15.23 
  21. 红包9=6.13 
  22. 红包10=7.15 
  23. 红包总金额:200

Tags: PHP微信红包金额 PHP拆分

分享到: