首页 >后端开发 >php教程 > php实现红包功能代码

php实现红包功能代码

小云云
小云云原创
2018-03-13 09:34:522642浏览

本文主要和大家分享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,&#39;.&#39;,&#39;,&#39;); 
	$sum = $sum - $money;
	$wamp[$i] = $money;
	
}
   //format_number(要转换的浮点数,要分隔的符号)
   echo "<hr/>";
   echo "<pre class="brush:php;toolbar:false">";
    print_r($wamp);
    echo "<pre class="brush:php;toolbar:false">";


}
//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[&#39;MoneySum&#39;] = $wamp;
$returnData[&#39;newTotal&#39;] = array_sum($wamp);
return $returnData;
}
//测试
$data = getRedGift(100, 10);
echo "<pre class="brush:php;toolbar:false">";


print_r($data);


echo "<pre class="brush:php;toolbar:false">";

相关推荐:

PHP开发微信现金红包功能代码分享

PHP随机红包的功能实现

php实现拼手气红包函数

以上是 php实现红包功能代码的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn