手气红包随即分发
作者:互联网
public interface OpenMode {
/**
* 将totalMoney分成count份,然后保存在ArrayList中,返回即可
* @param totalMoney 总金额
* @param totalCount 红包个数
* @return
*/
ArrayList
}
public class RedPacketFrame implements OpenMode{
@Override
public ArrayList
ArrayList
/**
* 随机分配 有可能多 有可能少
* 最少一分 最多不超过剩下金额平均数的2倍
*/
Random random = new Random();
double leftMoney = totalMoney;//剩下多少钱
double leftCount = totalCount;//剩下多少份
//随机发前n-1个,最后一个不需要随机
for (int i = 0; i < totalCount-1; i++) {
double money = random.nextInt((int) (leftMoney / leftCount * 2))+1;
list.add(money);
leftMoney -=money;
leftCount--;
}
list.add(leftMoney);
return list;
}
}
public class Test {
public static void main(String[] args) {
OpenMode openMode = new RedPacketFrame();
ArrayList<Double> divide = openMode.divide(100, 6);
divide.forEach(aDouble -> System.out.println(aDouble));
}
}
标签:红包,divide,分发,double,ArrayList,totalMoney,totalCount,手气,public 来源: https://www.cnblogs.com/ailhy/p/16441890.html