当前位置: 首页 > news >正文

php简单随机实现发红包程序

 前言:

使用PHP发红包,当我们输入红包数量和总金额后,PHP会根据这两个值进行随机分配每个金额,保证每个人都能领取到一个红包,每个红包金额不等,就是要求红包金额要有差异,所有红包金额总额应该等于总金额。

 

规律分析:

设定总金额为10元,有N个人随机领取,最小限额0.01元:

N=1 第一个

则红包金额=X元;

N=2 第二个

为保证第二个红包可以正常发出,第一个红包金额=0.01至9.99之间的某个随机数。

第二个红包=10-第一个红包金额;

N=3 第三个

红包1=0.01至9.99之间的某个随机数;

红包2=0.01至(10-红包1-0.01)的某个随机数;

红包3=10-红包1-红包2;

……

于是我们得到一个规律,在分配当前红包金额时,先预留剩余空白所需最少金额,然后在0.01至总金额-预留金额间取随机数,得到的随机数就是当前红包分配的金额。

实际应用中,程序先将红包金额分配好,即发红包时,红包个数以及每个红包的金额都分配好了,那么用户来抢红包时,我们随机给用户返回一个红包即可。
 

示例demo:

 1 <?php
 2 
 3 $total=10;//红包总金额  
 4 $num=10;// 分成10个红包,支持10人随机领取  
 5 $min=0.01;//每个人最少能收到0.01元  
 6  
 7 for ($i=1;$i<$num;$i++)  
 8 {  
 9   $safe_total=($total-($num-$i)*$min)/($num-$i);//随机安全上限  
10   $money=mt_rand($min*100,$safe_total*100)/100;  
11   $total=$total-$money; 
12    
13   echo '第'.$i.'个红包:'.$money.' 元,余额:'.$total.' 元 '.'<br>';  
14 }  
15 echo '第'.$num.'个红包:'.$total.' 元,余额:0 元'; 

 

结果打印:

 

转载于:https://www.cnblogs.com/cxx8181602/p/10022563.html

相关文章:

  • java变量学习
  • 增加索引
  • 关于梯度下降 - 线性回归的
  • ethereum Pet Shop
  • 事件机制
  • Hibernate 注解映射
  • Python基础4
  • httprunner 使用总结
  • log日志模块得作用
  • 爬虫作业
  • 12.4今日博客
  • 线性回归于逻辑回归的区别
  • Confluence 6 给一个从 Jira Service Desk 的非许可证用户访问权限
  • 微信小程序实现按首字母检索城市列表
  • Linux学习笔记
  • Android组件 - 收藏集 - 掘金
  • Angular 2 DI - IoC DI - 1
  • JavaScript异步流程控制的前世今生
  • Ruby 2.x 源代码分析:扩展 概述
  • Spring Boot MyBatis配置多种数据库
  • windows-nginx-https-本地配置
  • 来,膜拜下android roadmap,强大的执行力
  • 原生JS动态加载JS、CSS文件及代码脚本
  • MyCAT水平分库
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​TypeScript都不会用,也敢说会前端?
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #QT(智能家居界面-界面切换)
  • #微信小程序:微信小程序常见的配置传值
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (floyd+补集) poj 3275
  • (二)springcloud实战之config配置中心
  • (九)c52学习之旅-定时器
  • (强烈推荐)移动端音视频从零到上手(上)
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (一)u-boot-nand.bin的下载
  • (转)Linux整合apache和tomcat构建Web服务器
  • .apk文件,IIS不支持下载解决
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • @Transactional 竟也能解决分布式事务?
  • [14]内置对象
  • [AndroidStudio]_[初级]_[修改虚拟设备镜像文件的存放位置]
  • [BT]BUUCTF刷题第8天(3.26)
  • [BZOJ1008][HNOI2008]越狱
  • [C#]C# winform部署yolov8目标检测的openvino模型
  • [Delphi]一个功能完备的国密SM4类(TSM4)[20230329更新]
  • [docker]docker网络-直接路由模式
  • [Docker]十一.Docker Swarm集群raft算法,Docker Swarm Web管理工具