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

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

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

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

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

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

演示结果:

  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拆分

分享到: