VPS云服务器全国十强!中国五星级网络服务提供商!
当前主机167884个,其中:虚拟主机78413个、云主机49227个、金牌网站24297个、服务器3859
  • 双线双IP服务器托管月付仅需650元
  • 服务器团购
  • 服务器租用,绿色机房倡导者

php实现红包功能代码

摘要:php实现红包功能代码
作者: 纵横数据 时间:2018/3/1
 

本文主要和大家分享php实现的红包功能,主要以代码的形式和大家分享,由于是第一写红包对红包不是太了解,希望能帮助到大家。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 "<hr/>";
   echo "<pre>";
    print_r($wamp);
    echo "<pre>";
 
 
}
//echo 2;

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

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

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

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

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

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

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

下面是参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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);
 
 
echo "<pre>";




 


纵横数据-全球领先的互联网应用提供商!
地址:福建省厦门软件园二期观日路40号二楼J单元
《电信与信息服务业务经营许可证》编号:
ISP证:闽B2-20090001 ICP号:闽ICP备12003292号
网址:www.zoneidc.com www.ipcomserver.com

售前电话:0592-5580195/191/197/198
手机:18965134113 18950029581 18965140883
代理咨询:0592-5580198 18950029581
售后技术:0592-5580190 18950029502
财务续费:0592-5580192 18965139141

Copyright(c) 2005-2013 版权所有 [纵横数据] 厦门中横科技有限公司 ISO9001:2008国际质量体系认证
可信赖的 网络安全局 工商注册 备案认证工商执照安全网站安全检测可信网站