红包界面php(微信红包代码一键生成)

红包界面php

php

简单来说红包界面php,就是把一个大整数m分解(直接以“分为单位红包界面php,如1元即100)分解成n个小整数红包界面php的过程,小整数的范围是[min, max]。

最简单的思路,先保底,每个小红包保证有min,然后每个请求都随机生成一个0到(max-min)范围的整数,再加上min就是红包的钱数。

这个算法虽然简单,但是有一个弊端:最后生成的红包可能都是min钱数的。也就是说可能最后的红包都是0.01元的。

php红包算法

<?php

header("Content-Type: text/html;charset=utf-8");//输出不乱码,你懂的

$total=10000;//红包总额

$num=10;// 分成8个红包,支持8人随机领取

$min=10;//每个人最少能收到0.01元

echo '<pre>';

$redarr=array();

for ($i=1;$i<=$num;$i++)

{

$red=getredmoney($i,$total,$num,$min);

$total=$total-$red['money'];

echo '第'.$i.'个红包:'.$red['money'].' 元,余额:'.$red['total'].' 元 <br/>';

$redarr[]=$red['money'];

}

echo '总金额:'.array_sum($redarr);

/**

* 获取红包

* @param $i 第几个人

* @param $total 剩余总红包金额

* @param $num 总人数

* @param $min 最小获得金额

* @param $point 保留小数位数

*/

function getredmoney($i,$total,$num=10,$min=1,$point=0){

if($i==$num){

$money=$total;

}else{

$pre=$total/($num-$i+1);

if($pre==$min){

$money=$min;

}else if($pre<$min || ($pre-$min)<1){

$safe_total=$total-($num-$i)*$min;//随机安全上限

$money=@mt_rand($min*100,$safe_total*100)/100;

}else{

$safe_total=($total-($num-$i)*$min)/($num-$i);//随机安全上限

$money=@mt_rand($min*100,$safe_total*100)/100;

if($money<$min)$money=$min;

}

$money=round($money,$point);

}

$total=$total-$money;

return array('i'=>$i,'money'=>$money,'total'=>$total);

}

?>

红包界面php

发红包

发布于 2024-05-12 12:05:12
收藏
分享
海报
0 条评论
141
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~