其他分享
首页 > 其他分享> > 手气红包随即分发

手气红包随即分发

作者:互联网

public interface OpenMode {
/**
* 将totalMoney分成count份,然后保存在ArrayList中,返回即可
* @param totalMoney 总金额
* @param totalCount 红包个数
* @return
*/
ArrayList divide(double totalMoney,int totalCount);
}

public class RedPacketFrame implements OpenMode{
@Override
public ArrayList divide(final double totalMoney,final int totalCount) {
ArrayList list = new 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