php 随机钱数,PHP 仿微信红包金额随机
博主寒冰最近闲来无事。就想研究一下微信红包的金额随机算法。早在微信红包刚出来的时候就研究过。始终不得要领。后来,通过查阅诸多资料。听说要实现“正态分布”。这个理论的东西不想深挖。恰好在网上一篇博客找到一个相对完整的算法。我经过试用确实不错。经过我的一些优化达到了可用级别。
PHP 源码如下:
class RandMoney
{
/**
* 红包金额(元)
*
* -- 最小值:0.01。
*
* @var float
*/
private $rewardMoney;
/**
* 红包数量
*
* @var int
*/
private $rewardNum;
/**
* 分散度值
*
* -- 1 ~ 10000
* --- 最佳值 100
*
* @var int
*/
private $scatter;
/**
* 执行红包生成算法
*
* @param float $rewardMoney 随机总金额。
* @param int $rewardNum 拆分数量。
* @param int $scatter 分散度值。
* @return void
*/
public function splitReward($rewardMoney, $rewardNum, $scatter = 100)
{
// 传入红包金额和数量。
$this->rewardMoney = $rewardMoney;
$this->rewardNum = $rewardNum;
$this->scatter = $scatter;
$this->realscatter = $this->scatter / 100;
$avgRand = round(1 / $this->rewardNum, 4);
$randArr = [];
while (count($randArr) < $rewardNum) {
$t = round(sqrt(mt_rand(1, 10000) / $this->realscatter));
$randArr[] = $t;
}
$randAll = round(array_sum($randArr) / count($randArr), 4);
$mixrand = round($randAll / $avgRand, 4);
$rewardArr = [];
foreach ($randArr as $key => $randVal) {
$randVal = round($randVal / $mixrand, 4);
$rewardArr[] = round($this->rewardMoney * $randVal, 2);
}
sort($rewardArr);
$rewardAll = array_sum($rewardArr);
$rewardArr[$this->rewardNum - 1] = round($this->rewardMoney - ($rewardAll - $rewardArr[$this->rewardNum - 1]), 2);
rsort($rewardArr);
return $rewardArr;
}
}
调用:
$money = 100; // 总额。
$people = 200; // 红包个数。
$scatter = 100; // 分散度。就是拆成的金额分页更大。
$reward = new RandMoney();
$rewardArr = $reward->splitReward($money, $people, $scatter);
print_r($rewardArr);
大家可以执行一下试试。
php 随机钱数,PHP 仿微信红包金额随机相关推荐
- php 红包算法教程,php仿微信红包分配算法的实现方法
php仿微信红包分配算法的实现方法 本文实例讲述了php仿微信红包分配算法的实现方法.分享给大家供大家参考,具体如下: /** * 红包分配:把一定金额随机分配给指定人数 * * @param int ...
- 微信红包的随机算法是怎样实现的
2019独角兽企业重金招聘Python工程师标准>>> 微信红包的随机算法是怎样实现的? RT.我考虑了一个简单的算法: 比如100元,由10个人分,那么平均一个人是10元钱.然后付 ...
- 红包指定分配金额php,php仿微信红包分配算法的实现方法_PHP
本文实例讲述了php仿微信红包分配算法的实现方法.分享给大家供大家参考,具体如下: /** * 红包分配:把一定金额随机分配给指定人数 * * @param int $money 用于分配的金额 * ...
- Android 仿微信红包动画 平移动画
Android 仿微信红包动画 平移动画 先看效果图: 简单思路: 先找好素材,一张红包封面和 "开"这个图片,先用ps将红包图片P成两部分,两个椭圆的样子."开&quo ...
- php+仿微信发红包+负数,php仿微信红包分配算法的实现方法
本文实例讲述了php仿微信红包分配算法的实现方法.分享给大家供大家参考,具体如下: /** * 红包分配:把一定金额随机分配给指定人数 * * @param int $money 用于分配的金额 * ...
- 微信红包的随机算法是怎样实现的?
导语:今天看到有人问:关于微信红包的随机算法!就查阅资料看了一下"微信红包的架构设计",自己设计的"公平"的随机算法. 实现的代码 public static ...
- 红包的分配算法php,php仿微信红包分配算法的实现方法,红包算法
php仿微信红包分配算法的实现方法,红包算法 本文实例讲述了php仿微信红包分配算法的实现方法.分享给大家供大家参考,具体如下: /** * 红包分配:把一定金额随机分配给指定人数 * * @para ...
- php 仿微信发红包 负数,php仿微信红包分配算法的实现方法
本文实例讲述了php仿微信红包分配算法的实现方法.分享给大家供大家参考,具体如下: /** * 红包分配:把一定金额随机分配给指定人数 * * @param int $money 用于分配的金额 * ...
- 红包的分配算法php,php仿微信红包分配算法的实现方法,红包算法_PHP教程
php仿微信红包分配算法的实现方法,红包算法 本文实例讲述了php仿微信红包分配算法的实现方法.分享给大家供大家参考,具体如下: /** * 红包分配:把一定金额随机分配给指定人数 * * @para ...
最新文章
- 《理解 ES6》阅读整理:块绑定(Block Binding)
- python编程怎么做游戏主播_如何成为一名成功的编程主播?
- MyBatis 几个常用的 jdbcType数据
- python2.7安装scrapy_python 2.7 的Scrapy安装介绍
- q7goodies事例_Java 8 Friday Goodies:Lambda和SQL
- 阿里李飞飞:云原生分布式数据库面临哪些机遇与挑战?
- 【学员作品】我的电商类App 3.2.1居然被拒了,怎么破?(酷课堂iOS交流群问答整理201812期)
- 2021北京计算机考研科目,2021年北京大学计算机考研科目
- ArcGIS修改默认文件地理数据库
- 主成分分析法(三):计算步骤
- 通过 百度网盘 分享文件
- 支付宝统一收单接口实现支付宝支付
- linux版vmware无法导入ovf,vmware 虚拟机导入OVF出现路径错误
- [UE5蓝图基础一]13.类似”人类一败涂地”掉落一定距离会回到空中 最终着落点还是设定地形上
- 笨鸟的平凡之路-记一次spark错误
- 计算机省一级b类模拟试题,江苏省计算机一级模拟试题及答案
- Centos7下的zabbix安装与部署
- Render函数详解
- 在Linux系统上运行.net core程序
- Materialise Magics 22.0软件的安装
热门文章
- QPW 操作日志表(tl_operate_log)
- 华为服务器芯片总在pc,服务器芯片 华为
- 百度地图android绘图类,Class:android总类/android离线地图类
- python有道自动翻译_利用python写一个有道翻译的脚本
- 头条号个人中心登录_头条号平台上线「插入小程序」功能
- yolov3安卓实现_YOLOv3 的 TensorFlow 实现,GitHub 完整源码解析
- mysql ignore 1 lines_MYSQL使用笔记(1)
- jquery怎么判断不同的字显示不同的颜色_这个双十一,摄影师的显示器该换了,优派VP2785-2K显示器评测_显示器...
- delphi image 编辑器_照片拼图编辑器app下载-照片拼图编辑器下载 v1.0.0 安卓版
- 协议转换器是怎么分类的?主要有哪些类别?