PHP红包算法简析是怎样的?

更新于
2026-09-27 18:09:25
1阅读来源:SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计419个文字,预计阅读时间需要2分钟。

PHP红包算法简析是怎样的?

本章节简要介绍PHP拆红包算法,具有一定的参考价值,有需要的伙伴可以参考一下,希望对大家有所帮助。

PHP拆红包算法示例代码如下:/** * 红包 * @param int $totalMoney 红包总金额 * @param int $totalPeople 红包人数 * @return array */function sendRedPackage($totalMoney, $totalPeople) { $result=[]; $minMoney=0.01; // 最小红包金额 $maxMoney=$totalMoney / $totalPeople; // 最大红包金额 $leftMoney=$totalMoney; // 剩余金额 $leftPeople=$totalPeople; // 剩余人数

for ($i=0; $i < $totalPeople; $i++) { if ($leftPeople==1) { $result[$i]=$leftMoney; break; }

$money=mt_rand($minMoney, $maxMoney); $result[$i]=$money; $leftMoney -=$money; $leftPeople--; }

return $result;}

本篇文章给大家简析PHP拆红包算法,有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

PHP拆红包算法

代码如下:

/** * 拆分红包 * @param SendRedPackageRequest $request * @return array */ protected function spitMoney(SendRedPackageRequest $request) { $result = []; $reamingMoney = $request->money; for ($i = $request->count; $i >= 1; $i--) { if ($i === 1) { $result[] = round($reamingMoney, 2); $reamingMoney = 0; } else { $average = round(bcdiv($reamingMoney, $i), 2); //平均值 $amount = round(mt_rand(1, $average * 199) / 100, 2); $reamingMoney = doubleval(bcsub($reamingMoney, $amount)); $result[] = round($amount, 2); } } return $result; }

逻辑比较简单,传入金额.和拆分的数量

首先循环要拆分的数量,判断如果是最后一个就把剩下的钱全部塞进去;

如果不是,就取剩余的金额(第一次循环剩余的金额=总金额)除以剩下的次数,取得平均值,然后再随机取最小的0.01 和平均值*2,把剩余的金额更新一下就行了。

算法模拟微信拆红包算法,但是这是提前计算拆分的数据保存的,微信是每次动态计算的。

PHP红包算法简析是怎样的?

本文共计419个文字,预计阅读时间需要2分钟。

PHP红包算法简析是怎样的?

本章节简要介绍PHP拆红包算法,具有一定的参考价值,有需要的伙伴可以参考一下,希望对大家有所帮助。

PHP拆红包算法示例代码如下:/** * 红包 * @param int $totalMoney 红包总金额 * @param int $totalPeople 红包人数 * @return array */function sendRedPackage($totalMoney, $totalPeople) { $result=[]; $minMoney=0.01; // 最小红包金额 $maxMoney=$totalMoney / $totalPeople; // 最大红包金额 $leftMoney=$totalMoney; // 剩余金额 $leftPeople=$totalPeople; // 剩余人数

for ($i=0; $i < $totalPeople; $i++) { if ($leftPeople==1) { $result[$i]=$leftMoney; break; }

$money=mt_rand($minMoney, $maxMoney); $result[$i]=$money; $leftMoney -=$money; $leftPeople--; }

return $result;}

本篇文章给大家简析PHP拆红包算法,有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

PHP拆红包算法

代码如下:

/** * 拆分红包 * @param SendRedPackageRequest $request * @return array */ protected function spitMoney(SendRedPackageRequest $request) { $result = []; $reamingMoney = $request->money; for ($i = $request->count; $i >= 1; $i--) { if ($i === 1) { $result[] = round($reamingMoney, 2); $reamingMoney = 0; } else { $average = round(bcdiv($reamingMoney, $i), 2); //平均值 $amount = round(mt_rand(1, $average * 199) / 100, 2); $reamingMoney = doubleval(bcsub($reamingMoney, $amount)); $result[] = round($amount, 2); } } return $result; }

逻辑比较简单,传入金额.和拆分的数量

首先循环要拆分的数量,判断如果是最后一个就把剩下的钱全部塞进去;

如果不是,就取剩余的金额(第一次循环剩余的金额=总金额)除以剩下的次数,取得平均值,然后再随机取最小的0.01 和平均值*2,把剩余的金额更新一下就行了。

算法模拟微信拆红包算法,但是这是提前计算拆分的数据保存的,微信是每次动态计算的。

PHP红包算法简析是怎样的?