java模拟实现微信红包算法

网友投稿 195 2023-02-18

java模拟实现微信红包算法

本文实例为大家分享了java实现微信红包算法的具体代码,供大家参考,具体内容如下

实现过程

1.代码如下(示例):

import java.math.BigDecimal;

import java.util.ArrayList;

public class GenRedPacket {

static ArrayList list = new ArraynesClmList();;

public static BigDecimal bianLiJia(ArrayList list) {

BigDecimal b = new BigDecimal("0");

for (int i = 0; i < list.size(); i++) {

b = b.add(list.get(i));

}

return b;

}

public static void bianLiJian(BigDecimal b1, BigDecimal b2) {

if (bianLiJia(list).doubleValue() < b1.doubleValue()) {

BigDecimal b3 = bianLiJia(list);

BigDecimal b4 = b1.subtract(b3);

int i = 0;

list.set(i = (int) (Math.random() * (b2.intValue())), list.get(i).add(b4));

} else if (bianLiJia(list).doubleValue() > b1.doubleValue()) {

BigDecimal b3 = bianLiJia(list);

BigDecimal b4 = b3.subtract(b1).divide(b2, 2, BigDecimal.ROUND_FLOOR);

for (int i = 0; i < list.size(); i++) {

if (list.get(i).doubleVahttp://lue() > b4.doubleValue()) {

list.set(i, list.get(i).subtract(b4));

}

}

}

if (bianLiJia(list).doubleValue() > b1.doubleValue()) {

BigDecimal b3 = bianLiJia(list);

BigDecimal b4 = b3.subtract(b1);

for (int i = 0; i < list.size(); i++) {

if (list.get(i).doubleValue() > b4.doubleValue()) {

list.set(i, list.get(i).subtract(b4));

}

}

bianLiJian(b1, b2);

}

}

public static ArrayList genRedPacket(String total, int count) {

BigDecimal b1 = new BigDecimal(total);

BigDecimal b2 = new BigDecimal(count);

for (int i = 0; i < count; i++) {

String s = String.valueOf(((int) (Math.random() * (Integer.parseInt(total) + 1)))

+ ((int) (Math.random() * 100) + 1) / 100.0);

BigDecimal b3 = new BigDecimal(s);

list.add(b3);

}

bianLiJian(b1, b2);

return list;

}

public void fhb(String total, int count) {

genRedPacket(total,count);

int i = 1;

for(BigDecimal b:list) {

System.out.println("第"+i+"个红包:"+b+"元");

i++;

}

}

}

2.代码如下(示例):

import java.text.ParseException;

import java.util.Scanner;

public class Test {

public static void main(String[] args) thnesClmrows ParseException {

Scanner scanner = new Scanner(System.in);

GenRedPacket dp = new GenRedPacket();

System.out.print("请输入要发红包金额与个数:");

String s1 = scanner.next();

int a1 = scanner.nextInt();

dp.fhb(s1, a1);

}

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:短信平台接口api(短信平台接口 106短信接口)
下一篇:使用Redis incr解决并发问题的操作
相关文章

 发表评论

暂时没有评论,来抢沙发吧~