红包算法
时间:2019-09-18
本文章向大家介绍红包算法,主要包括红包算法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
$money = 10; // 红包大小 $num = 10; // 红包个数 $min = 0.01; // 单个红包最低金额 $ret = lottery($money, $num, $min); if (! is_array($ret)) { exit($ret.PHP_EOL); } echo '手气最佳:'.max($ret).PHP_EOL; echo '手气最差:'.min($ret).PHP_EOL; echo PHP_EOL; print_r($ret); //---------------------------------------------------------------------- // 产生一个随机浮点数 function random_float($min = 0, $max = 1) { return round($min + mt_rand() / mt_getrandmax() * ($max - $min), 2); } // 微信随机红包模拟算法 function lottery($sum_money, $num, $min_money = 0.01) { if ($sum_money < $num * $min_money) { return '钱不够'; } $list = []; for ($i = 1; $i <= $num; $i++) { // 剩余的可分配金额,需要确保剩下的人每人都至少可以拿到保底的钱 $remain = $sum_money - array_sum($list) - ($num - $i + 1) * $min_money; if ($i < $num) { // 前面的人随机获得 // 每轮抽取的金额范围:0 至 剩余金额平均值的两倍 $get = random_float(0, $remain / ($num - $i + 1) * 2); } else { // 最后一个人拿全部剩下的 $get = $remain; } // 最后再将每个人保底的钱加上 $list[] = round(round($get, 2) + $min_money, 2); } return $list; }
原文地址:https://www.cnblogs.com/mengor/p/11539864.html
- nginx静态资源文件无法访问,403 forbidden错误
- vue.js如何在标签属性中插入变量参数
- SpringBoot解决ajax跨域问题
- WebBrowser(IE) 与 JS 相互调用
- HOSTS配置问题导致集群异常故障分析
- Linux Regulator Framework(2)_regulator driver
- systemd的作用
- alsa声卡分析alsa-utils调用过程(二)-tinymixer
- alsa声卡分析alsa-utils调用过程(一)-tinyplay
- ALSA声卡驱动的DAPM(二)-建立过程
- ALSA声卡驱动的DAPM(一)-DPAM详解
- 高通Audio中ASOC的codec驱动(二)
- vue项目里的日期格式化
- CentOS下的Mysql的安装和使用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一位Android程序员入坑Flutter后整理出一份超详细的学习笔记
- Python批量获取并保存手机号归属地和运营商的示例
- Qt音视频开发31-Onvif抓拍图片
- 突击并发编程JUC系列-ReentrantLock
- 【腾讯云】记一次搭建云服务器
- 前端:如何让background背景图片进行CSS自适应
- 为什么Rust的println!不会发生所有权转移?
- 【译文】Rust futures: async fn中的thread::sleep和阻塞调用
- Smart Pointer Programming Techniques
- 一文搞懂AQS及其组件的核心原理
- 比较JavaScript中的数据结构(数组与对象)
- 9 个JavaScript 技巧
- [已解决]报错:XGBoostError: XGBoost Library (libxgboost.dylib) could not be loaded.
- 2.3 spring5源码---spring ioc 加载配置类的源码
- Tree Shaking概念详解