PHP微信红包的算法实现探讨
2024-08-24 06:56:35
header("Content-Type: text/html;charset=utf-8");//输出不乱码,你懂的
$total=10;//红包总额
$num=8;// 分成8个红包,支持8人随机领取
$min=0.01;//每个人最少能收到0.01元 for ($i=1;$i<$num;$i++)
{
$safe_total=($total-($num-$i)*$min)/($num-$i);//随机安全上限
$money=mt_rand($min*100,$safe_total*100)/100;
$total=$total-$money;
echo '第'.$i.'个红包:'.$money.' 元,余额:'.$total.' 元 <br/>';
}
echo '第'.$num.'个红包:'.$total.' 元,余额:0 元';
输出结果见下图
第1个红包:0.06 元,余额:9.94 元
第2个红包:1.55 元,余额:8.39 元
第3个红包:0.25 元,余额:8.14 元
第4个红包:0.98 元,余额:7.16 元
第5个红包:1.88 元,余额:5.28 元
第6个红包:1.92 元,余额:3.36 元
第7个红包:2.98 元,余额:0.38 元
第8个红包:0.38 元,余额:0 元
分析规律
设定总金额为10元,有N个人随机领取:
N=1
则红包金额=X元; N=2
为保证第二个红包可以正常发出,第一个红包金额=0.01至9.99之间的某个随机数
第二个红包=10-第一个红包金额; N=3
红包1=0.01至0.98之间的某个随机数
红包2=0.01至(10-红包1-0.01)的某个随机数
红包3=10-红包1-红包2
.....
最新文章
- myeclipse 第一步
- 一行实现QQ群组头像,微信群组,圆角等效果. 并支持url直接加载图片
- webpack 学习笔记
- css3 calc()方法详解
- JQuery以JSON方式提交数据到服务端
- CDN技术分享
- poj邮局1160
- LINQ 如何实现 in 与 not in
- ios学习开发阶段小结
- mysql查看数据库命令
- 【转】WPF中的Binding技巧(二)
- KVM地址翻译流程及EPT页表的建立过程
- Session,ViewState用法
- c++命名空间瀑布
- python笔记之常用模块用法分析
- geotrellis使用(三十三)关于Geotrellis读取Geotiff的两个细节
- 对象序列化Serializable
- docker学习构建镜像---第三章节
- Vipe框架构思记
- Number Cutting Game HDU - 2848(DFS)