首页 > 编程 > Java > 正文

java微信红包实现算法

2019-11-26 13:06:03
字体:
来源:转载
供稿:网友

随着目前微信越来越火,所以研究微信的人也就越来越多,这不前一段时间,我们公司就让我做一个微信公众号中问卷调查发红包功能,经过一段时间的研究,把功能完成,里面主要的实现步骤都是按照微信公众号开发文档来的,很详细,在整个过程唯有红包算法需要仔细编写,因为毕竟涉及到钱,所以得小心,而且不仅微信中需要发红包,我们在做APP时可能也会遇到需要发红包的功能,所以这里列出红包的核心算法,供大家一起学习研究。

public static List getRed(int number,float total,double min){ //红包数  //int number = 300;  //红包总额  // float total = 500;  float money;  //最小红包  //double min = 0.48;  double max;  int i = 1;  List math = new ArrayList();  DecimalFormat df = new DecimalFormat("###.##");  while (i < number) {  //保证即使一个红包是最大的了,后面剩下的红包,每个红包也不会小于最小值  max = total - min * (number - i);  int k = (int)(number - i) / 2;  //保证最后两个人拿的红包不超出剩余红包  if (number - i <= 2) {   k = number - i;   }  //最大的红包限定的平均线上下  max = max / k;  //保证每个红包大于最小值,又不会大于最大值  money = (int) (min * 100 + Math.random() * (max * 100 - min * 100 + 1));  money = (float)money / 100;  //保留两位小数  money = Float.parseFloat(df.format(money));  total=(int)(total*100 - money*100);  total = total/100;  math.add(money);  System.out.println("第" + i + "个人拿到" + money + "剩下" + total);  i++;  //最后一个人拿走剩下的红包  if (i == number) {   math.add(total);   System.out.println("第" + i + "个人拿到" + total + "剩下0");   }  } //取数组中最大的一个值的索引  System.out.println("本轮发红包中第" + (math.indexOf(Collections.max(math)) + 1) + "个人手气最佳"); return math;  }

更多精彩内容请点击《Android微信开发教程汇总》,《java微信开发教程汇总》欢迎大家学习阅读。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表