糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > php写抢红包 红包生成函数(微信抢红包)

php写抢红包 红包生成函数(微信抢红包)

时间:2019-03-16 16:36:15

相关推荐

php写抢红包 红包生成函数(微信抢红包)

最近自己开发了一个类似微信抢红包的功能,在网上找了很多红包生成的函数,但都不是那么完美,于是自己动手写了一个。

( 阿荣原创^_^ )

//$money 是发红包的总金额, $num 红包生成的数量

/**

* 生成单个红包

* @param float $money 红包金额(单位:元)

* @param int $num 红包个数

* @return float 单个红包的金额

*/

function makeSingleLuckMoney($money, $num) {

if ($num == 1) {

return round($money, 2);

}

$avg = $money / $num;

if ($avg < 0.1) {

$min = 0.01;

} else {

$min = $avg / 4;

}

$useMoney = $money - $num * $min;

if (($useMoney == 0) || ($useMoney < 0.02)) {

return $min;

}

$arr = array();

$c = $num;

for ($i = 0; $i < $c; $i++) {

$useMoney = $money - $num * $min;

$tmp = rand(1, $useMoney * 100) / 100;

$max = $useMoney / 2;

if ($tmp > $max) {

$n = $min + $max;

} else {

$n = $min + $tmp;

}

$tmpMoney = floor($n * 100) / 100;

$money = $money - $tmpMoney;

$num--;

$arr[] = $tmpMoney;

}

$keyNum = count($arr);

if ($keyNum > 1) {

$key = rand(0, $keyNum - 1);

} else {

$key = 0;

}

return floor($arr[$key] * 100) / 100;

}

/**

* 生成所有红包

* @param float $money 红包金额(单位:元)

* @param int $num 红包个数

* @return array 所有单个红包金额组成的数组

*/

function makeAllLuckMoney($money, $num) {

$leftMoney = $money;

$leftNum = $num;

$resultArr = array();

for ($i = 0; $i < $num; $i++) {

$resultArr[] = $luckMoney = makeSingleLuckMoney($leftMoney, $leftNum);

$leftMoney = $leftMoney - $luckMoney;

$leftNum--;

}

shuffle($resultArr);

return $resultArr;

}

//example

print_r(makeAllLuckMoney(10, 7));

如果觉得《php写抢红包 红包生成函数(微信抢红包)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。