微信红包5元随机红包随机金额
1需求
写?固定红包+随机红包
固定红包就是每个红包?呃?样本,你有多少发多少固定红包?呃,只是?。
随机红包的需求是。?比如红包?呃,5块钱,需要发10红包。随机范围是0.01到0.99;5块钱必须发完。呃,需要吗?趋势不变的正态分布。
(0.99可以任意指定,也可以是AVG * 2-0.01;?如avg = 5/10 = 0.5;;(平均值* 2 - 0.01 = 0.99))
2需求分析
2.1固定红包
如果是固定红包,算法是什么?直线。t是固定红包的金额。如图所示。
f(x)= t;(1 & lt;= x & lt=数字)
image.png
2.2随机红包
如果我们做?随机函数rand。兰特(0.01,0.99);所以10次随机,如果最坏的情况是全部?金额0.99,合计?呃9.9元。会超过5元。?数额也会不正常分配。终于想到了?借助和数学函数,可以当随机红包用吗?设备,好吗?抛物线,三?功能。最后我选了等腰三?线性函数。
1算法原理
如果需要发红包,总是?金额总计为Money,红包数量为num。额头的范围是【最小,最大】,线性?程如图所示。
image.png
三个点的坐标:
(x1,y1) = (1,min)
(x2,y2) =(数量/2,最大值)
(x3,y3) =(数字,最小值)
确定性线性?程:
$ y = 1.0 *(x-$ x 1)/($ x2-$ x 1)*($ y2-$ y 1)+$ y 1;(x 1 & lt;= x & lt= x2)
$ y = 1.0 *(x-$ x2)/($ x3-$ x2)*($ y3-$ y2)+$ y2;(x2 & lt= x & lt= x3)
维修数据:
y(合计)= y1+y2+y3 +......ynum;
y(组合)可能> TotalMoney,解释?变成?如果数量太多,需要修改数据,则从(y1,y2,y3...ynum)乘以0.01。直到y(合计)= totalMoney。
y(一起)可能< TotalMoney,解释?变成?如果数量很少并且数据需要修改,则从(y1,y2,y3)中添加0.01...ynum)每次。直到y(合计)= totalMoney。
2算法原理示例
如果需要发红包,总是?金额11470,红包数量7400。金额的范围是[0.01,3.09],线性?程如图所示。
image.png
3需求设计
3.1类图设计
image.png
3.2源代码设计
/**
*随机红包+固定红包算法【策略模式】
*/
//配置传输数据的DTO
类别选项
{
//红包?额
公共资金总额;
//红包数量
公共$ num
//范围开始
public $ rangeStart
//范围结算
public $ rangeEnd
//?红包策略
public $ builderStrategy
//随机红包剩余规则
public $ randFormatType//Can_Left:数据可以不修复就留下;No_Left:不能有公共静态函数create ($ totalmoney,$ num,$ rangestart,$ rangeend,$ builder strategy,$ rand format =' no _ left ')。
{
$self =新的自己();
$ self->;num = $ num
$ self->;rangeStart = $ rangeStart
$ self->;rangeEnd = $ rangEnd
$ self->;totalMoney = $ totalMoney
$ self->;builder strategy = $ builder strategy;
$ self->;randFormatType = $ randFormatType;
返回$ self
}
}
//红包?完成设备连接?
界面构建策略
{
//创建红包
公共函数create();
//设置配置
公共函数setOption(options to $ option);
//可以吗?变成一个红包
公共函数iscan builder();
//?红包功能
公共函数FX($ x);
}
//固定等额红包策略
EqualPackageStrategy类实现IBuilderStrategy {
//单个红包?额
公共$ oneMoney
//数量
公共$ num
public function _ _ construct($ option = null)
{
if($ option instance of options to)
{
$ this-& gt;setOption($ option);
}
}
公共函数setOption(options to $ option)
{
$ this-& gt;one money = $ option-& gt;rangeStart
$ this-& gt;num = $ option-& gt;num
}
公共函数create()
{
$ data = array();
if(false = = $ this-& gt;isCanBuilder())
{
返回$ data
}
$ data = array();
if(false = = is _ int($this-& gt;num)| | $ this-& gt;num & lt= 0) {
返回$ data
}
for($ I = 1;$ i & lt= $ this-& gt;num$i++)
{
$ data[$ I]= $ this-& gt;外汇(美元);
}
返回$ data
}
/**
*等额红包?程是?直线
*
* @param mixed $x
* @访问公共
* @返回void
*/
公共函数fx($x)
{
return $ this-& gt;oneMoney
}
/**
*你能搞定红包吗?
*
* @访问公共
* @返回void
*/
公共函数isCanBuilder()
{
if(false = = is _ int($this-& gt;num)| | $ this-& gt;num & lt= 0)
{
返回false
}
if(false = = is _ numeric($this-& gt;one money)| | $ this-& gt;oneMoney & lt= 0)
{
返回false
}
//单个红包?在1
如果($ this-& gt;oneMoney & lt0.01)
{
返回false
}
返回true
}
}
//随机红包策略(3?形状)
RandTrianglePackageStrategy类实现IBuilderStrategy
{
//总金额
公共资金总额;
//红包数量
公共$ num
//最随机的红包是什么?价值
公共$ minMoney
//最随机的红包是什么?价值
公共$ maxMoney
//修复数据?公式:NO_LEFT:红包总额=预算总额;CAN_LEFT:红包总额
//预算盈余?额
public $ leftMoney
public function _ _ construct($ option = null)
{
if($ option instance of options to)
{
$ this-& gt;setOption($ option);
}
}
公共函数setOption(optionadto $ option){
$ this-& gt;total money = $ option-& gt;货币总额;
$ this-& gt;num = $ option-& gt;num
$ this-& gt;format type = $ option-& gt;randFormatType$ this-& gt;min money = $ option-& gt;rangeStart
$ this-& gt;maxMoney = $ option-& gt;rangeEnd
$ this-& gt;left money = $ this-& gt;货币总额;
}
/**
*创建随机红包
*
* @访问公共
* @返回void
*/
公共函数create()
{
$ data = array();
if(false = = $ this-& gt;isCanBuilder())
{
返回$ data
}
$ left money = $ this-& gt;leftMoney
for($ I = 1;$ i & lt= $ this-& gt;num$i++)
{
$ data[$ I]= $ this-& gt;外汇(美元);
$ left money = $ left money-$ data[$ I];
}
//修复数据
list($okLeftMoney,$ ok data)= $ this-& gt;格式($leftMoney,$ data);
//随机排序
shuffle($ ok data);
$ this-& gt;leftMoney = $ okLeftMoney
返回$ okData
}
/**
*可以随机发红包吗?
* @访问公共
* @返回void
*/
公共函数isCanBuilder()
{
if(false = = is _ int($this-& gt;num)| | $ this-& gt;num & lt= 0)
{
返回false
}
if(false = = is _ numeric($this-& gt;total money)| | $ this-& gt;totalMoney <= 0) {
返回false
}
//平均值
$ avg money = $ this-& gt;total money/1.0/$ this-& gt;num
//卑鄙?大多数?价值
if($ avg money & lt;$ this-& gt;minMoney)
{
返回false
}
返回true
}
/**
*拿到剩下的?额
* @访问公共
公共函数getLeftMoney()
{
return $ this-& gt;leftMoney
}
/**
*随机红包?变成一个函数。三个?功能。[(1,0.01),($num/2,$avgMoney),($num,0.01)] * @param mixed $x,1 & lt;= $ x & lt= $ this-& gt;num
* @访问公共
* @返回void
*/
公共函数fx($x)
{
if(false = = $ this-& gt;isCanBuilder())
{
返回0;
}
if($ x & lt;1 | | $ x & gt;$ this-& gt;数字)
{
返回0;
}
$ x 1 = 1;
$ y 1 = $ this-& gt;米莫尼;
//中间点
$ x2 = ceil($ this-& gt;num/1.0/2);
//我的巅峰
$ y2 = $ this-& gt;maxMoney
//最后一点
$ x3 = $ this-& gt;num
$ y3 = $ this-& gt;米莫尼;
//当X1时,X2和X3都是1(竖线)
if($ x 1 = = $ x2 & amp;& amp$x2 == $x3)
{
//'/_ \ '三个?线形?旅行
//'/'部分
if($x1!= $ x2 & amp& amp$ x & gt= $ x 1 & amp;& amp$ x & lt= $x2)
{
、y = 1.0 *(x-$ x 1)/($ x2-$ x 1)*($ y2-$ y 1)+$ y 1;返回number_format($y,2,'.', '');
}
//'\ '形状
if($x2!= $ x3 & amp& amp$ x & gt= $ x2 & amp& amp$ x & lt= $x3)
{
$ y = 1.0 *(x-$ x2)/($ x3-$ x2)*($ y3-$ y2)+$ y2;返回number_format($y,2,'.', '');
}
返回0;
}
/**
*格式修复红包数据
*
* @param mixed $leftMoney
* @param数组$数据
* @访问公共
* @返回void
*/
私有函数格式($leftMoney,array $data)
{
//不能随便发红包。
if(false = = $ this-& gt;isCanBuilder())
{
返回数组($leftMoney,$ data);
}
//剩余红包为0。
if(0 == $leftMoney) //?需要维修数据
返回数组($leftMoney,$ data);
}
//数组为空
if(count($ data)& lt;1)
{
返回数组($leftMoney,$ data);
}
//如果有盈余,而$ left money >;0
if(' Can _ Left ' = = $ this-& gt;格式类型
& amp& amp$ leftMoney & gt0)
{
返回数组($leftMoney,$ data);
}
//如果还有剩余的钱,试着加到?红包?不会加就试试?a . while($left money & gt;0)
{
$ found = 0;
foreach($ data as $ key = & gt;$val)
{
//减少循环优化
if($ left money & lt;= 0)
{
打破;
}
//预判
$ afterLeftMoney =(double)$ left money-0.01;
$ after val =(double)$ val+0.01;
if($ afterLeftMoney & gt;= 0 & amp& amp$ afterVal & lt= $ this-& gt;maxMoney)
{
$ found = 1;
$ data[$ key]= number _ format($ after val,2,'.','');
$ leftMoney = $ afterLeftMoney
//精确度
}
}
//如果没有红包要加,就需要加完,否则无限循环结束。
//也就是说,每个红包都不会有钱。比如红包已经是最多的了?价值。这时候分的时候一定要给个手势。无限循环。if($found == 0)
{
打破;
}
}
//If $ leftmoney
while($left money & lt;0)
{
$ found = 0;
foreach($ data as $ key = & gt;$val)
{
if($ left money & gt;= 0)
{
打破;
}
//预判
$ afterLeftMoney =(double)$ left money+0.01;
$ after val =(double)$ val-0.01;
if($ afterLeftMoney & lt;= 0 & amp& amp$ afterVal & gt= $ this-& gt;minMoney)
{
$ found = 1;
$ data[$ key]= number _ format($ after val,2,'.','');
$ leftMoney = $ afterLeftMoney
$ left money = number _ format($ left money,2,'.','');
}
}
//如果?如果没有减下来的红包,就需要结束,否则就是死循环。
if($found == 0)
{
}
}
返回数组($leftMoney,$ data);
}
}
//维护策略的环境类。
类RedPackageBuilder
{
//示例
受保护的静态$ _ instance = null
/**
*单一实例(获得的实例)
*
* @return MemcacheOperate
*/
公共静态函数getInstance()
{
if (null === self::$_instance)
{
self::$ _ instance = new self();
}
返回self::$ _ instance;
}
/**
*制定战略?显示
*
* @param string $type类型
* @返回void
*/
公共函数getBuilderStrategy($type) {
$class = $type。“打包策略”;
if(class_exists($class))
返回新的$ class();
}
其他
{
Thrownnewexception ("{$ class}类不存在!");
}
}
公共函数getRedPackageByDTO(optionadto $ option dto)
{
//获取策略
$ builder strategy = $ this-& gt;getBuilderStrategy($ options to-& gt;builder strategy);//设置参数
$ builder strategy-& gt;setOption($ option dto);
return $ builder strategy-& gt;create();
}
}
类别客户端
{
公共静态函数main($argv)
{
//固定红包
$ dto = option dto::create(1000,10,100,100,'等于');
$ data = RedPackageBuilder::getInstance()-& gt;getRedPackageByDTO($ dto);
//print _ r($ data);
//随机红包[修复数据]
$dto = OptionDTO::create(5,10,0.01,0.99,' rand triangle ');
$ data = RedPackageBuilder::getInstance()-& gt;getRedPackageByDTO($ dto);print _ r($ data);
//随机红包[无数据修复]
$dto = OptionDTO::create(5,10,0.01,0.99,' RandTriangle ',' Can _ Left ');
$ data = RedPackageBuilder::getInstance()-& gt;getRedPackageByDTO($ dto);
//print _ r($ data);
}
¥
5.9
百度文库VIP限时优惠现已开启,享受6亿+VIP内容。
现在就去拿
微信红包随机数_微信红包随机数详细解释及算法代码
微信红包随机数_微信红包随机数详细解释及算法代码
1需求
写?固定红包+随机红包
固定红包就是每个红包?呃?样本,你有多少发多少固定红包?呃,只是?。
随机红包的需求是。?比如红包?呃,5块钱,需要发10红包。随机范围是0.01到0.99;5块钱必须发完。呃,需要吗?趋势不变的正态分布。
(0.99可以任意指定,也可以是AVG * 2-0.01;?如avg = 5/10 = 0.5;;(平均值* 2 - 0.01 = 0.99))
第1页
2需求分析
2.1固定红包
如果是固定红包,算法是什么?直线。t是固定红包的金额。如图所示。
f(x)= t;(1 & lt;= x & lt=数字)
image.png
2.2随机红包
如果我们做?随机函数rand。兰特(0.01,0.99);所以10次随机,如果最坏的情况是全部?金额0.99,合计?呃9.9元。会超过5元。?数额也会不正常分配。终于想到了?借助和数学函数,可以当随机红包用吗?设备,好吗?抛物线,三?功能。最后我选了等腰三?线性函数。
第2页
1算法原理
如果需要发红包,总是?金额总计为Money,红包数量为num。额头的范围是【最小,最大】,线性?程如图所示。
image.png
三个点的坐标:
(x1,y1) = (1,min)
(x2,y2) =(数量/2,最大值)
(x3,y3) =(数字,最小值)
确定性线性?程:
$ y = 1.0 *(x-$ x 1)/($ x2-$ x 1)*($ y2-$ y 1)+$ y 1;(x 1 & lt;= x & lt= x2)
第3页
$ y = 1.0 *(x-$ x2)/($ x3-$ x2)*($ y3-$ y2)+$ y2;(x2 & lt= x & lt= x3)
维修数据:
y(合计)= y1+y2+y3 +......ynum;
y(组合)可能> TotalMoney,解释?变成?如果数量太多,需要修改数据,则从(y1,y2,y3...ynum)乘以0.01。直到y(合计)= totalMoney。
y(一起)可能< TotalMoney,解释?变成?如果数量很少并且数据需要修改,则从(y1,y2,y3)中添加0.01...ynum)每次。直到y(合计)= totalMoney。
第4页
2算法原理示例
如果需要发红包,总是?金额11470,红包数量7400。金额的范围是[0.01,3.09],线性?程如图所示。
image.png
3需求设计
3.1类图设计
image.png
3.2源代码设计
/**
*随机红包+固定红包算法【策略模式】
第5页
*/
//配置传输数据的DTO
类别选项
{
//红包?额
公共资金总额;
//红包数量
公共$ num
//范围开始
public $ rangeStart
第6页
//范围结算
public $ rangeEnd
//?红包策略
public $ builderStrategy
//随机红包剩余规则
public $ randFormatType//Can_Left:数据可以不修复就留下;No_Left:不能有公共静态函数create ($ totalmoney,$ num,$ rangestart,$ rangeend,$ builder strategy,$ rand format =' no _ left ')。
第7页
{
$self =新的自己();
$ self->;num = $ num
$ self->;rangeStart = $ rangeStart
$ self->;rangeEnd = $ rangEnd
$ self->;totalMoney = $ totalMoney
$ self->;builder strategy = $ builder strategy;
$ self->;randFormatType = $ randFormatType;
返回$ self
展开全文?
在应用程序中免费阅读全文
去图书馆APP签到读卡,免费读取微信红包随机数...
限制性豁免
导向长度图
传输到网络磁盘
发送到微信
下载文档
北京百度网讯科技有限公司。8.0.70隐私政策权限描述
版权说明:本文档由用户提供并上传,收入归内容提供者专有。内容如有侵权,请举报或索赔。
第8页
为你随机抽取微信红包号码...964个成员文档。
微信红包随机金额生成算法的仿真与应用
2537人阅读
微信红包随机金额生成算法的仿真与应用
1455人阅读
微信红包的金额真的是随机分配的吗?
2391人阅读
微信红包算法的分析与实现
2508人阅读
拿到所有的文件。4326人在看
根据你的浏览,为你整理一个资料集。
微信红包随机数_微信红包随机数详细解释及算法代码
文件夹
微信红包规律分析——百度文库
3.6分
2906阅读
受欢迎和写得好
如何猜一个五块五袋的红包的尾数——百度文库
4.4分
1082读数
微信红包随机金额生成算法的仿真与应用——百度文库
4.0分
1491读数
最近下载量猛增。
剩余10个选定的文档
去APP一键获取所有收藏。
相关文件
微信红包随机金额生成算法的仿真与应用
免费获取全文
微信红包随机金额生成算法的仿真与应用
免费获取全文
微信红包的金额真的是随机分配的吗?
免费获取全文
微信红包算法的分析与实现
免费获取全文
微信红包数字意义大全课件。文件
已经有2567人看过了
行业好评
微机原理及应用微机系统试题库及答案(可编辑)
2060人读过
百里挑一
计算机网络系统招标(技术部分)
1569人看过
网络安全设备-网关[整理版]
1108人看过
用ASP导出Excel数据的四种方法
2213人看过
学校开展网络安全教育活动的方案
1822人看过
第三篇综合应用综合案例第五篇计算机网络应用综合案例
已经有2470人看过了
CPU管脚断了怎么焊?
1218人看过
数据结构序列表的查找、插入和删除
1594人看过
网络安全建设实施方案
1331人看过
网络安全检查自查表
1489人看过
阅读更多
推荐的文档集