用java实现模拟微信红包算法
程序员文章站
2022-07-09 14:29:03
文章目录实现过程1.2.实现过程1.代码如下(示例):import java.math.BigDecimal;import java.util.ArrayList;public class GenRedPacket {static ArrayList list = new ArrayList();;public static BigDecimal bianLiJia(ArrayList
实现过程
1.
代码如下(示例):
import java.math.BigDecimal;
import java.util.ArrayList;
public class GenRedPacket {
static ArrayList<BigDecimal> list = new ArrayList<BigDecimal>();;
public static BigDecimal bianLiJia(ArrayList<BigDecimal> 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).doubleValue() > 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<BigDecimal> 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) throws 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);
}
}
本文地址:https://blog.csdn.net/skaihzx/article/details/109957605
上一篇: Intel官方发布第七代酷睿全系处理器:史上最强i3登场
下一篇: 使用IDEA进行反编译