java 微信随机红包算法代码实例
作者:李明泽 时间:2022-12-03 12:29:08
前几天的一个晚上突然想到微信红包应该有一个随机算法,就自己试着写了下,也不知道对不对,看了看网上的说法,好像到现在为止官方也没有给出一个确切的算法,只好在这里献丑了,先贴出代码:
public static double [] getMoney(double money, int num){
Random r = new Random();
DecimalFormat format = new DecimalFormat(".##");
double middle = Double.parseDouble(format.format(money/num));
double [] dou = new double[num];
double redMoney = 0;
double nextMoney = money;
double sum = 0;
int index = 0;
for(int i=num;i>0;i--){
if(i == 1){
dou[index] = nextMoney;
}else{
while(true){
String str = format.format(r.nextDouble()*nextMoney);
redMoney = Double.parseDouble(str);
if(redMoney>0 && redMoney < middle){
break;
}
}
nextMoney = Double.parseDouble(format.format(nextMoney - redMoney));
sum = sum + redMoney;
dou[index] = redMoney;
middle = Double.parseDouble(format.format(nextMoney/(i-1)));
index++;
}
}
return dou;
}
这里一个基本思路是这样的:首先算出红包的平均值,再通过一个随机红包数小于这个平均值的红包,当该红包发完后,红包总金额需要相应减少,同时重新计算这个平均值:新的总金额%(原总红包数-1),直到最后一个红包时,把所有的剩余金额塞进去。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
标签:java,微信,随机红包,算法
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Android截屏保存png图片的实例代码
2022-01-26 16:10:11
Java几个实例带你进阶升华下篇
2021-06-11 01:19:46
Java JVM程序指令码实例解析
2022-05-16 15:09:38
![](https://img.aspxhome.com/file/2023/6/81356_0s.png)
Android开发技巧之像QQ一样输入文字和表情图像
2022-06-26 23:41:34
![](https://img.aspxhome.com/file/2023/2/128982_0s.png)
给c#添加SetTimeout和SetInterval函数
2021-07-02 00:58:08
![](https://img.aspxhome.com/file/2023/7/77237_0s.png)
解析spring事务管理@Transactional为什么要添加rollbackFor=Exception.class
2021-09-03 17:07:41
![](https://img.aspxhome.com/file/2023/4/72314_0s.png)
Spring Cloud Ribbon客户端详细介绍
2023-11-27 21:36:22
![](https://img.aspxhome.com/file/2023/7/89947_0s.png)
Mybatis步骤分解实现一个增删改查程序
2021-09-16 01:12:43
![](https://img.aspxhome.com/file/2023/0/65730_0s.png)
10个C#程序员经常用到的实用代码片段
2022-12-01 13:02:58
Java压缩文件工具类ZipUtil使用方法代码示例
2022-11-26 02:21:32
java实现百度云OCR文字识别 高精度OCR识别身份证信息
2023-10-24 13:50:37
![](https://img.aspxhome.com/file/2023/1/82441_0s.png)
Swing常用组件之多行文本区JTextArea
2023-11-08 14:16:49
探讨:android项目开发 统筹兼顾 需要考虑的因素
2023-08-05 11:21:32
Java分布式锁的概念与实现方式详解
2022-07-11 19:33:57
Android采用双缓冲技术实现画板
2022-05-28 15:55:58
![](https://img.aspxhome.com/file/2023/4/123314_0s.jpg)
Android之使用Android-query框架开发实战(二)
2022-06-30 16:17:59
全面解析Android中对EditText输入实现监听的方法
2022-09-15 15:05:55
![](https://img.aspxhome.com/file/2023/5/138045_0s.jpg)
如何通过zuul添加或修改请求参数
2022-08-13 05:05:20
Java9中对集合类扩展的of方法解析
2022-06-10 09:49:43
![](https://img.aspxhome.com/file/2023/8/132118_0s.jpg)
C#微信公众号开发之接收事件推送与消息排重的方法
2022-01-31 08:44:46