首页 > 编程语言 > 详细

红包算法

时间:2020-11-06 14:07:10      阅读:20      评论:0      收藏:0      [点我收藏+]
<?php
/**
 * @param $total [你要发的红包总额]
 * @param int $num [发几个]
 * @return array[生成红包金额]
 */
function getRedGift($total, $num = 10)
{
    $min = 0.01;
    $wamp = array();
    $returnData = array();
    for ($i = 1; $i < $num; ++$i) {
        $safe_total = ($total - ($num - $i) * $min) / ($num - $i); //红包金额的最大值
        if ($safe_total < 0) break;
        $money = @mt_rand($min * 100, $safe_total * 100) / 100;//随机产生一个红包金额
        $total = $total - $money;//剩余红包总额
        $wamp[$i] = round($money, 2);//保留两位有效数字
    }
    $wamp[$i] = round($total, 2);
    $returnData[‘MoneySum‘] = $wamp;
    $returnData[‘newTotal‘] = array_sum($wamp);
    return $returnData;
}
//测试
$data = getRedGift(100, 10);
echo "<pre>";print_r($data);

打印数据显示:

技术分享图片

 

红包算法

原文:https://www.cnblogs.com/kevin-yang123/p/13936112.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!