news 2026/6/10 14:03:23

php 随机红包数生成

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
php 随机红包数生成
无论哪种实现方式,随机红包都要遵守几个核心约束(这是和单纯随机数最大的区别):
  1. 总金额固定(比如 100 元分 10 个红包);
  2. 每个红包金额非空(至少 0.01 元,避免分到 0);
  3. 金额随机且符合 “拼手气” 特性(有人多有人少,而非平均);
  4. 所有红包金额之和严格等于总金额。
/** * 随机分配红包金额. * * @param float|string $totalMoney 总金额(元) * @param int $totalTimes 总次数 * @param float|string $minMoney 单次最小值(元) * @param float|string $maxMoney 单次最大值(元) * * @return array|false 包含每次红包金额的数组(保留两位小数)|false 参数错误时返回false */ function random_red_packet($totalMoney, $totalTimes, $minMoney, $maxMoney) { // 转换为分进行计算,避免浮点数精度问题 $totalMoneyCent = (int) bcmul($totalMoney, 100); $minMoneyCent = (int) bcmul($minMoney, 100); $maxMoneyCent = (int) bcmul($maxMoney, 100); // 参数合法性校验 if ( $totalTimes <= 0 || $minMoneyCent <= 0 || $maxMoneyCent < $minMoneyCent || $totalMoneyCent < $totalTimes * $minMoneyCent // 总金额不足以分配最小值 || $totalMoneyCent > $totalTimes * $maxMoneyCent // 总金额超过最大值总和 ) { return false; } $redPackets = []; $remainingCent = $totalMoneyCent; $remainingTimes = $totalTimes; for ($i = 0; $i < $totalTimes; ++$i) { // 最后一次直接分配剩余金额 if (1 == $remainingTimes) { $currentCent = $remainingCent; } else { // 计算当前可分配的最大金额:不超过单红包最大值,且剩余次数能满足最小值 $maxCurrentCent = min( $maxMoneyCent, $remainingCent - ($remainingTimes - 1) * $minMoneyCent ); // 随机生成当前红包金额(在最小值和最大可分配金额之间) $currentCent = mt_rand($minMoneyCent, $maxCurrentCent); } // 转换为元并保留两位小数 $redPackets[] = bcdiv($currentCent, 100, 2); // 更新剩余金额和次数 $remainingCent = bcsub($remainingCent, $currentCent, 2); --$remainingTimes; } // 打乱数组(可选,模拟随机顺序) shuffle($redPackets); return $redPackets; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:46:52

固定资产管理软件是什么:2026年有哪些主流品牌推荐

在数字化转型加速的今天&#xff0c;资产管理已成为企业降本增效、规避风险的核心环节。然而&#xff0c;多数企业仍深陷传统资产管理的困境&#xff0c;而专业的资产管理软件&#xff0c;正是破解这些痛点、实现资产精细化管控的关键抓手。 一、资产管理软件的价值 告别手工盘…

作者头像 李华
网站建设 2026/6/4 5:38:26

如何将文件从 PC 无线传输到 Android

如果您需要将文件从 PC 无线传输到 Android&#xff0c;有很多无线选项可供选择。然而&#xff0c;并非所有选项都安全可靠。为了帮助您无需 USB 数据线即可安全地发送文件&#xff0c;我们在本文中总结了 7 种方法和 3 个必知常见问题解答。如果您需要&#xff0c;请继续阅读。…

作者头像 李华
网站建设 2026/6/9 23:39:00

Qt之多线程和并发_P4

本节主要介绍线程死锁,会从三个方面介绍:什么是线程死锁、死锁产生的条件和原因分析、死锁的规避,并配有示例程序详细分析死锁的原因和解决方案。 文章目录 线程死锁的概念 什么叫死锁 死锁条件 死锁示例 场景1:重复锁定同一个互斥量 场景2:递归调用 场景3:锁顺序反转 场…

作者头像 李华
网站建设 2026/6/10 11:45:41

好写作AI:收到评审意见后,让AI帮你把“重投”变成“接收”

导语&#xff1a;当邮箱弹出“Decision: Major Revision”时&#xff0c;你的心跳是不是漏了一拍&#xff1f;每个投过稿的硕博生都懂那种感觉&#xff1a;打开评审意见前&#xff0c;需要做十分钟心理建设看到“建议拒绝”时&#xff0c;大脑瞬间空白三秒面对二十条修改意见&a…

作者头像 李华
网站建设 2026/5/13 23:04:17

DOS叙事环与意义行为原生论:智能时代意义生成的重构、责任伦理的奠基与人机共生愿景的导航

DOS叙事环与意义行为原生论&#xff1a;智能时代意义生成的重构、责任伦理的奠基与人机共生愿景的导航摘要本文旨在对岐金兰提出的“AI元人文”核心理论——“DOS叙事环”与“意义行为原生论”——进行一次全面、深入且非简化性的系统性阐释。面对智能时代日益凸显的算法介入、…

作者头像 李华
网站建设 2026/5/26 6:07:48

AI浪潮来袭!小白程序员如何抓住高薪算法岗机遇?收藏必备!

AI技术正席卷后端领域&#xff0c;传统岗位缩减&#xff0c;AI岗位需求激增&#xff0c;年薪可达40万。然而&#xff0c;许多求职者因能力不匹配而难以胜任。为帮助大家转型&#xff0c;推出深度算法培养计划&#xff0c;由一线大厂专家授课&#xff0c;涵盖实战项目&#xff0…

作者头像 李华