php红包代金券代码,php实现红包功能代码

本文主要和大家分享php实现的红包功能,主要以代码的形式和大家分享,由于是第一写红包对红包不是太了解,希望能帮助到大家。for ($i=1; $i < $p; ++$i) {

$s2 = ($sum - ($p - $i) * 0.01)/($p - $i);

//echo $s2;die;

$money = rand(1,$s2*100);

$money = number_format($money/100,2,'.',',');

$sum = $sum - $money;

$wamp[$i] = $money;

}

//format_number(要转换的浮点数,要分隔的符号)

echo "


";

echo "

";

print_r($wamp);

echo "

";

}

//echo 2;

可以基本实现红包功能 主要说说思想

场景 有个同学群 里面有 50个同学 为了庆祝聚会 要发红包

首先要求每个人必须领到红包 并且每个人领到红包概率基本相同

那么 每个人领到红包概率 = (红包现有的金额 - (当前没领到红包人数) * 每人最少领到红包的金额 )/ 当前没领到红包人数

$safe_total 每个人领到红包概率 $total 红包现有的金额 $min 人最少领到红包的金额

那么 公式 就能 $safe_total = ($total - ($num - $i) * $min) / ($num - $i);

代码不唯一 重要的就是 思想

下面是参考代码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 "

";

print_r($data);

echo "

";

相关推荐:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值