php 红包算法教程,红包算法的一种实现(PHP)

这篇博客分享了一种使用PHP实现的红包算法,该算法考虑了红包的最小值和最大值限制。作者参考了一个Java版本的红包算法,并进行了改进,确保每个红包金额在预设范围内。代码实现包括红包分配逻辑和随机数生成,适用于需要限制红包金额场景的项目。
摘要由CSDN通过智能技术生成

前段时间有个项目需要用到红包算法,本以为简单,细想之下有点复杂。于是就百度了一下,没想到查出了不少,有些写的很复杂。由于时间有点紧,我就找了一个简单点的。然后参考着写一个。参考的地址是:https://blog.csdn.net/gorgle/article/details/52954413;

这个地址中的红包是用java写的。根据其原理,我用PHP写了一遍,并且改进了点。他的算法中没有加每个红包最大最小值限制。我用PHP写的时候加上去了。代码如下:<?php

/*

$total_money:红包总金额

$total_people:总人数/总分数

$min_money:每份红包的最小金额

$max_money:每份红包的最大金额

*/

function redpack($total_money,$total_people,$min_money,$max_money){

$ret=array();

$new_ret=array();

$total_real_money=$total_money-$total_people*$min_money;

$ret[0]=0;

for($i=1;$i

$ret[$i]=get_rand($ret[$i-1],$total_real_money,($max_money-$min_money));

}

sort($ret);

for($j=0;$j

if($j==count($ret)-1){

$new_ret[count($ret)-1]=$total_real_money-$ret[count($ret)-1]+$min_money;

}else{

$new_ret[]=$ret[$j+1]-$ret[$j]+$min_money;

}

}

shuffle($new_ret);

return $new_ret;

}

function get_rand($start,$end,$max){

$tmp=rand($start,$end);

$total_max=$start+$max;

if($tmp>($total_max) || empty($tmp)){

return get_rand($start,$end,$max);

}else{

return $tmp;

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值