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,微信,随机红包,算法
0
投稿

猜你喜欢

  • Android截屏保存png图片的实例代码

    2022-01-26 16:10:11
  • Java几个实例带你进阶升华下篇

    2021-06-11 01:19:46
  • Java JVM程序指令码实例解析

    2022-05-16 15:09:38
  • Android开发技巧之像QQ一样输入文字和表情图像

    2022-06-26 23:41:34
  • 给c#添加SetTimeout和SetInterval函数

    2021-07-02 00:58:08
  • 解析spring事务管理@Transactional为什么要添加rollbackFor=Exception.class

    2021-09-03 17:07:41
  • Spring Cloud Ribbon客户端详细介绍

    2023-11-27 21:36:22
  • Mybatis步骤分解实现一个增删改查程序

    2021-09-16 01:12:43
  • 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
  • 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
  • Android之使用Android-query框架开发实战(二)

    2022-06-30 16:17:59
  • 全面解析Android中对EditText输入实现监听的方法

    2022-09-15 15:05:55
  • 如何通过zuul添加或修改请求参数

    2022-08-13 05:05:20
  • Java9中对集合类扩展的of方法解析

    2022-06-10 09:49:43
  • C#微信公众号开发之接收事件推送与消息排重的方法

    2022-01-31 08:44:46
  • asp之家 软件编程 m.aspxhome.com