/**
* @Description: TODO(红包类)
* @version: V1.0
*/
public class RedPacket {
//每人最低可分得的钱,后面简称低保
private int mon_min = 1;
public int getMon_min() {
return mon_min;
}
public void setMon_min(int mon_min) {
this.mon_min = mon_min;
}
public List redRacket(int money,int peo){
if(peo < 1) {
throw new RuntimeException("请设置合理的红包分配人数!!");
}
else if(money < mon_min * peo) {
throw new RuntimeException("红包设置不能满足每人的最低标准!!");
}
List list = new ArrayList();
//每人分得红包的具体数目
int mon = 0;
Random ran = new Random();
//最后一次 不参加循环
for (int i = peo; i > 1; i--) {
//分钱时减去低保
mon = ran.nextInt(money - (mon_min * i) + 1) + mon_min;
//红包扣除对应的钱
money -= mon;
list.add(mon);
}
//最后一次直接将剩余的钱添加到集合中
list.add(money);
return list;
}
}
/**
* @Description: TODO(测试类)
* @version: V1.0
*/
public class Test {
public static void main(String[] args) {
RedPacket red = new RedPacket();
//测试红包人数小于1
//red.redRacket(100, 0);
//测试是否符合低保
//red.redRacket(10, 50);
//正常测试
List list = red.redRacket(100, 4);
for (Integer integer : list) {
System.out.println("每人分得的钱为:" + integer );
}
//每人低保测试
List list1 = red.redRacket(10, 10);
for (Integer integer : list1) {
System.out.println("每人低保得的钱为:" + integer );
}
}
}