微信红包java算法代码 java微信红包实现( 二 )


性能优化点:1 使用int不使用double.(单位用分不用元)也省去了还要用math round四舍五入,把double类型数据只留小数点后前两位.2 random() 方法用于返回一个随机数,随...
2023-01-24
模仿微信发红包代码 - iteye
NULL 博文链接:
2019-09-15
下一页
相关搜索
代码生成器
红包转账生成器
假红包生成器
红包代码一键生成
红包生成器在线制作
假红包代码复制
2023红包封面领取码
红包代码
二维码红包生成器
假红包代码大全
红包代码大全可复制
微信装b专用代码
微信红包装b生成器
微信红包生成器
红包怎样立即退还
微信假红包消息文字
假红包代码生成器
微信红包特效代码
微信红包代码大全
假红包代码复制微信
微信假红包代码整人
微信假红包一键生成器
微信假红包代码链接
微信红包代码
微信假红包生成器
微信假红包生成代码
微信假红包代码复制
假红包代码
假微信红包生成器
微信假红包代码
微信伪造红包代码
首页-免责-用户反馈
微信红包5元随机红包随机的金额微信红包随机数字_微信随机红包数详解和算法代码
1 需求
写?个固定红包 + 随机红包
固定红包就是每个红包?额?样,有多少个就发多少个固定红包?额就? 。
随机红包的需求是 。?如红包总?额5元 , 需要发10个红包 。随机范围是 0.01到0.99;5元必需发完,?额需要有?定趋势的正态分布 。
(0.99可以任意指定 , 也可以是 avg * 2 - 0.01;?如avg = 5 / 10 = 0.5;(avg * 2 - 0.01 = 0.99))
2 需求分析
2.1 固定红包
如果是固定红包,则算法是?条直线 。t就是固定红包的额度 。如图 。
f(x) = t;(1 = x = num)
image.png
2.2 随机红包
如果我们使?随机函数rand 。rand(0.01,0.99);那么10次随机,如果最坏情况都是?额0.99,总?额就是9.9元 。会超过5元 。?额也会不正态分布 。最后思考了?下借助与数学函数来当作随机红包的发?器,可以?抛物线,三?函数 。最后选定了等腰三?线性函数 。
1 算法原理
如果需要发红包总?额是totalMoney,红包个数是num个,?额范围是[min,max],线性?程如图 。
image.png
三个点的坐标:
(x1,y1) = (1,min)
(x2,y2) = (num/2,max)
(x3,y3) = (num,min)
确定的线性?程:
$y = 1.0 * ($x - $x1) / ($x2 - $x1) * ($y2 - $y1) + $y1 ; (x1 = x = x2)
$y = 1.0 * ($x - $x2) / ($x3 - $x2) * ($y3 - $y2) + $y2; (x2 = x = x3)
修数据:
y(合) = y1 + y2 + y3 +...... ynum;
y(合)有可能totalMoney ,说明?成?额多了,需要修数据,则从(y1,y2,y3.....ynum)这些每次减少0.01 。直到y(合) = totalMoney 。
y(合)有可能totalMoney ,说明?成?额少了,需要修数据,则从(y1,y2,y3.....ynum)这些每次加上0.01 。直到y(合) = totalMoney 。
2 算法原理样例
如果需要发红包总?额是11470,红包个数是7400个 , ?额范围是[0.01,3.09],线性?程如图 。
image.png
3 需求设计
3.1 类图设计
image.png
3.2 源码设计
/**
* 随机红包+固定红包算法[策略模式]
*/
//配置传输数据DTO
class OptionDTO
{
//红包总?额
public $totalMoney;
//红包数量
public $num;
//范围开始
public $rangeStart;
//范围结算
public $rangeEnd;
//?成红包策略
public $builderStrategy;
//随机红包剩余规则
public $randFormatType; //Can_Left:不修数据 , 可以有剩余;No_Left:不能有剩余public static function create($totalMoney,$num,$rangeStart,$rangEnd, $builderStrategy,$randFormatType = 'No_Left')

推荐阅读