思路
为了不让最终生成的红包值多少相差太悬殊,先得到红包平均值,然后具体的红包值在这个平均值上下浮动,具体浮动多少由系统指定,注意该值范围在[0,平均数之间)
具体实现:
- 根据用户输入的总金额、总人数、浮动范围,求得红包上限和下限
- 先给每个红包中塞入平均值金额,并求得剩余金额
- 产生随机的红包值,范围在[0,浮动范围)
- 当剩余金额-随机的红包值>=0时: 随机往一个红包里面塞入随机的红包值,当原红包值+随机的红包值不大于上限里放进去,大于上限时,重新产生随机数
- 当剩余金额-随机的红包值 high) { //如果红包总值小于等于最大值
index = (int) (Math.random() * (person )); //获取List下标
tmp = data.get(index);
}
data.set(index, tmp + rand);
shengYu = shengYu - rand;
//进行下一次循环
rand = (int) (Math.random() * (range) + 1);//产生[1,range]之间的随机数
}
//最后修正
if(shengYu - rand high) { //如果红包总值小于等于最大值
index = (int) (Math.random() * (person )); //获取List下标
tmp = data.get(index);
}
data.set(index, tmp + shengYu);
}
//输出结果
int sum = 0;
for (int i = 0; i
关注打赏