本文主要是介绍Java实现抢红包算法——详细注释,标准语法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
package learn;import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;public class RobRedPacket {// 发红包算法,金额参数以分为单位public static List<Integer> divideRedPacket(Integer totalAmount, Integer totalPeopleNum) {List<Integer> amountList = new ArrayList<>();// 剩余金额Integer restAmount = totalAmount;// 剩余没抢的人数Integer restPeopleNum = totalPeopleNum;Random random = new Random();for (int i = 0; i < totalPeopleNum - 1; i++) {// 随机范围:[1,剩余人均金额的两倍),左闭右开int amount = random.nextInt(restAmount / restPeopleNum * 2 - 1) + 1;// 扣钱restAmount -= amount;// 修改人数restPeopleNum--;// 得到此次抢到的金额amountList.add(amount);}// 缺陷:最后一个人拿到的红包不是均分的amountList.add(restAmount);return amountList;}public static void main(String[] args) {List<Integer> amountList = divideRedPacket(5000, 30);for (Integer amount : amountList) {System.out.println("抢到金额:" +new BigDecimal(amount).divide(new BigDecimal(100)));}}
}
这篇关于Java实现抢红包算法——详细注释,标准语法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!