PHP实现-简单的红包算法

2018-03-21 11:21 By "Powerless" 3500 0 0

一般情况下只需要吧红包的金额算好.

按照用户的领取顺序发给用户就好了.

当然你也可以在每个用户领取之后重新计算下一个用户的红包金额.

/**
 * @param int $total 红包总金额(元)
 * @param int $num 红包总数
 */
public function redPacks($total, $num)
{
   $min=0.01;//每个人最少0.01元
   for ($i=1;$i<$num;$i++)
   {
       $safe_total=($total-($num-$i)*$min)/($num-$i);
       $money=rand($min*100,$safe_total*100)/100;
       $total=$total-$money;
      $data[$i-1] = $money;
   }
      $data[$num-1] = $total;
   return $data;
}

$red = redPacks(8,8);
print_r($red);

运行结果:

[

    0.42, 

    0.77, 

    1.13, 

    0.24, 

    0.24, 

    0.74, 

    2.23, 

    2.23

]


评 论

View in WeChat

Others Discussion

  • MySQL中的行级锁,表级锁,页级锁
    Posted on 2018-08-25 11:00
  • MySQL分组
    Posted on 2019-11-18 14:00
  • PHP练习-爬楼梯问题
    Posted on 2020-08-14 23:56
  • PHP8.1 性能基准测试
    Posted on 2022-10-08 17:40
  • MySQL事务介绍
    Posted on 2019-06-05 18:14
  • 必学十大经典排序算法,看这篇就够了
    Posted on 2019-11-18 16:30
  • 巧用CAS解决数据一致性问题
    Posted on 2019-03-07 11:55
  • PHP练习-无重复字符的最长子串
    Posted on 2020-09-17 18:03