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
.....

最新文章

  1. myeclipse 第一步
  2. 一行实现QQ群组头像,微信群组,圆角等效果. 并支持url直接加载图片
  3. webpack 学习笔记
  4. css3 calc()方法详解
  5. JQuery以JSON方式提交数据到服务端
  6. CDN技术分享
  7. poj邮局1160
  8. LINQ 如何实现 in 与 not in
  9. ios学习开发阶段小结
  10. mysql查看数据库命令
  11. 【转】WPF中的Binding技巧(二)
  12. KVM地址翻译流程及EPT页表的建立过程
  13. Session,ViewState用法
  14. c++命名空间瀑布
  15. python笔记之常用模块用法分析
  16. geotrellis使用(三十三)关于Geotrellis读取Geotiff的两个细节
  17. 对象序列化Serializable
  18. docker学习构建镜像---第三章节
  19. Vipe框架构思记
  20. Number Cutting Game HDU - 2848(DFS)

热门文章

  1. Spring Data Elasticsearch
  2. 【转】ubuntu打包压缩命令总结
  3. 【最长下降子序列】【动态规划】【二分】XMU 1041 Sequence
  4. DataGridView DataGridViewCheckBoxColumn编辑时实时触发事件
  5. LeetCode——Two Sum
  6. LoadRunner基础入门教程
  7. Java连接MySQL中文乱码处理【转载】
  8. RMQ——窗口题解
  9. Tomcat: IllegalStateException: No output folder --reference
  10. checkbox遍历操作, 提交所有选中项的值