抢红包随机分钱
记录一下,代码还有问题,分的多了存在问题,需要修改。
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
/**
* @Description: TODO(这里用一句话描述这个类的作用)
* @Author mrs
* @Date 2021/2/20 15:13
*/
public class test1000 {
public static void main(String[] args) {
Map hongbao = hongbao(10.00d, 5);
System.out.println(hongbao);
}
public static Map hongbao(Double money, Integer count) {
Double countmoney = 0.0d;
Map map = new HashMap(count);
//最小红包不能小于0.01分
Double min = 0.01d;
Random rd = new Random();
DecimalFormat df = new DecimalFormat("0.00");
Double num1;
Double rand;
//遍历个数count-1次
for (int i = 0; i < count - 1; i++) {
//获取小于1的随机数
rand = rd.nextDouble();
//保留两位小数
rand = Double.parseDouble(df.format(rand));
//算的第一个分的金额
num1 = Double.parseDouble(df.format(rand * money));
//算的第一个分之后剩余的金额
money = money - num1;
//小于0.01,默认给0.01
if (num1.compareTo(min) == -1) {
num1 = min;
money = money - num1;
}
map.put(i, num1);
}
money = Double.parseDouble(df.format(money));
//放入最后一个分的红包
map.put(count - 1, money);
//统计分享的总金额是多少
for (int j = 0; j < map.size(); j++) {
countmoney += Double.parseDouble(map.get(j).toString());
}
System.out.println("分享的总金额是=" + countmoney);
return map;
}
}
分享的总金额是=10.0
{0=5.1, 1=1.37, 2=0.78, 3=2.67, 4=0.08}