PHP 红包功能代码
前段时间被问这个问题,最近有空就写写啦,还是挺有趣的
首先做下抢红包方法分类:
对于发红包的人来说,一共有大致3类(其他的我暂时没想到,有想到可以联系我呀~)
一、拼手气红包个数不定(完全看运气)
二、拼手气红包规定个数(个数一定,至少一分)
三、平均分红包(个数一定,大家平分)还是这个好写是吧!嘿嘿
上代码:
<?php
var_dump(rob_red_bages(5 , 10)); var_dump(distribute_red_bages(5)); /*
方法主要功能:拼手气红包(个数不定)
一个参数
参数一: 红包总金额(按分计算)
*/
function distribute_red_bages($sum){
$sum = $sum*100;
$i=0;
while($sum>0){
$temp = rand(1 , $sum);//红包值
$sum -= $temp;
$arr[$i++] = $temp/100;
}
//check($arr);
return $arr;
} /*
方法主要功能:均分红包
两个参数:
参数一: 红包总金额
参数二: 均分个数
*/
function average_red_bages($sum , $num){
$res = $sum/$num;
for($i=0 ; $i<$num ; $i++){
$arr[$i] = $res;
}
//check($arr);
return $arr;
} /*
方法主要功能:规定个数的手气红包
两个参数:
参数一:红包总金额
参数二:红包个数 计算流程,随机生成num个数
求和得到m
用sum/m 得到每个数需要k
用随机数*k
*/
function rob_red_bages($sum , $num){
$sum = $sum*100;
for($i=0 ; $i<$num ; $i++){
$temp = rand(1 , $sum);
$arr[$i] = $temp;
$sumall += $temp;
}
$k = $sum/$sumall;
for($i=0 ; $i<sizeof($arr); $i++){
$arr2[$i] = $arr[$i]*$k/100;
}
return $arr2;
} /*红包总额检测*/
function check($arr){
foreach($arr as $a){
$sum += $a;
echo $a."+";
} echo " 0 =".$sum."\n";
} ?>
下面分析下拼手气红包吧(平分的就不说了,大家都会):
拼手气红包个数不定思路:(总金额:sum)
---->随机第一个小于sum的数: n
---->总金额减去该数: temp = sum-n
---->随机一个小于temp的数
---->递归上述方法直到总金额为0
---->返回存储随机结果的数组
这个方法比较常规,用来实现规定个数的红包也是可以实现的!不过~
拼手气红包规定个数思路(总金额 sum,红包个数 num )
---->随机num个小于sum的数,生成数组
---->对这些数求和得到allsum
---->用sum除以allsum得到所有生成数的公倍数
---->数组每个元素与公倍数相乘得到每个红包的的数值
这个方法有缺点(最终的结果可能会略大于sum,或者略小于sum 因为除法可能出现无理数)
大概就是这些啦!欢迎交流指正!~~~
PHP 红包功能代码的更多相关文章
- 微信红包功能(含示例demo)
开通支付权限 登录微信公众平台管理后台,找到“微信支付”一栏,进行开通会跳转到“微信支付商户平台”,根据提示提交相关证明,完成支付权限的开通开通之后,“微信支付”一栏会显示相关信息,在“开发-接口权限 ...
- 用.NET Core实现一个类似于饿了吗的简易拆红包功能
需求说明 以前很讨厌点外卖的我,最近中午经常点外卖,因为确实很方便,提前点好餐,算准时间,就可以在下班的时候吃上饭,然后省下的那些时间就可以在中午的时候多休息一下了. 点餐结束后,会有一个好友分享 ...
- php红包功能
最近公司要开发 广告红包功能,这是写好的代码先放到这 https://files.cnblogs.com/files/jxkshu/PHP%E5%B9%BF%E5%91%8A%E7%BA%A2%E5% ...
- 微信小程序发送红包功能。填坑记录
微信官方文档 1.开通条件 (1)商户号已入驻90日 (2)商户号有连续30天正常交易 (3)只有企业资质的商户才有资格申请 2.注意事项 (1)目前小程序红包仅支持用户微信扫码打开小程序 (2)小程 ...
- C#开发微信门户及应用(38)--微信摇一摇红包功能
摇一摇周边红包接口是为线下商户提供的发红包功能.用户可以在商家门店等线下场所通过摇一摇周边领取商家发放的红包.我曾经在<C#开发微信门户及应用(28)--微信“摇一摇·周边”功能的使用和接口的实 ...
- 原生JS实现购物车结算功能代码+zepto版
html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...
- 常见.NET功能代码汇总 (2)
常见.NET功能代码汇总 23,获取和设置分级缓存 获取缓存:首先从本地缓存获取,如果没有,再去读取分布式缓存写缓存:同时写本地缓存和分布式缓存 private static T GetGradeCa ...
- 通过javascript库JQuery实现页面跳转功能代码
通过javascript库JQuery实现页面跳转功能代码的四段代码实例如下. 实例1: 1 2 3 4 $(function(){ var pn = $("#gotopagenum&quo ...
- IOS开发-OC学习-常用功能代码片段整理
IOS开发-OC学习-常用功能代码片段整理 IOS开发中会频繁用到一些代码段,用来实现一些固定的功能.比如在文本框中输入完后要让键盘收回,这个需要用一个简单的让文本框失去第一响应者的身份来完成.或者是 ...
- 20个开发人员非常有用的Java功能代码
本文将为大家介绍20个对开发人员非常有用的Java功能代码.这20段代码,可以成为大家在今后的开发过程中,Java编程手册的重要部分. 1. 把Strings转换成int和把int转换成String ...
随机推荐
- AGE SORT
AGE SORT 你有所有城市的人的年齡資料,而且這城市的人們都大於1歲,且都不會活超過100歲.現在你有個簡單的任務以升冪去排序所有的年齡 Input 接下來會有很多筆的資料,每筆資料從輸入n 開始 ...
- echo输出带颜色的字
文章目录 格式 所有颜色 字体样式 示例 格式 \033[A;F;Bm #放在文本的左边,可以影响后面所有字体的样式 解释: F代表字体颜色值(Font),颜色编号30~37. B代表背景颜色值(Ba ...
- Java开发者的神经网络进阶指南:深入探讨交叉熵损失函数
前言 今天来讲一下损失函数--交叉熵函数,什么是损失函数呢?大体就是真实与预测之间的差异,这个交叉熵(Cross Entropy)是Shannon信息论中一个重要概念,主要用于度量两个概率分布间的差异 ...
- 集成学习与随机森林(二)Bagging与Pasting
Bagging 与Pasting 我们之前提到过,其中一个获取一组不同分类器的方法是使用完全不同的训练算法.另一个方法是为每个预测器使用同样的训练算法,但是在训练集的不同的随机子集上进行训练.在数据抽 ...
- STM32 学习:IAP 简单的IAP例子
--- title: mcu-stm32-IAP-1-sample date: 2020-05-27 18:21:53 categories: tags: - iap - stm32 --- 章节概述 ...
- 【点云检测】OpenPCDet 教程系列 [1] 安装 与 ROS运行
前言与参考 主要是介绍库的使用,做笔记区 首先搜索的时候有个问题 一直在我脑子里 hhh 就是MMlab其实还有一个叫mmdetection3d 的库,然后搜的时候发现 hhh 有网友和我一样的疑惑: ...
- P9196 题解
来一份线性时间的题解. 考虑先解决前缀限制,显然可以直接把字符串和询问全部搬到 Trie 树上,问题就变成了查询一个子树内满足后缀限制的字符串数量. 接着考虑 Trie 树合并,具体地,把后缀限制以及 ...
- 洛谷P1378
这道题需要处理的信息比较多,需要注意的是一个油滴扩展后可能会包含其他的点 #include <iostream> #include <utility> #include < ...
- 开源免费的专注于建立大型个人知识库推荐-Trilium Notes
Trilium Notes是一个分层的笔记应用程序,专注于建立大型个人知识库. 支持相当丰富的 markdown,包括 mermaid 和 latex,而且即时渲染,和 typora 一样.支持代码类 ...
- 解决方案 | win10任务栏假死,桌面鼠标可以动但是无法点击任务栏图标
1 背景 今天电脑不知道什么原因,鼠标出现了无法点击任务栏图标的情况,但是桌面上可以晃动. 2 解决过程 (方法1-3对我无效,但是不代表对你们无效,) 方法1:重启资源管理器. 方法2:电脑重启.或 ...