本文主要是介绍java生成红包的简单算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Random random = new Random();//总金额int total = 10000;//所有金额都是以分为单位的(金融界)//红包数量int num = 20;//最小红包int min = 100;List<Integer> list = new ArrayList<Integer>();int totalTmp = 0;for(int i = 0;i<num;i++){int hongbao = 0;//预留红包(不然第一个红包很多,第二个也很大,后面的红包没钱了)Integer pre = min*(num-i-1);/*除以5 是为了随便生成的数太大,而导致红包分配不均匀()这个数字越大,导致最后一个红包很大,其他的很小*/hongbao = random.nextInt((total-pre-totalTmp)/5);hongbao = hongbao < min ? min : hongbao;if(i==num-1) {hongbao = total - totalTmp;}totalTmp += hongbao;list.add(hongbao);}System.out.println(list);Collections.shuffle(list);//重新洗牌打乱System.out.println(list);//校验生成的红包总金额是否一致int amount = 0;for (Integer a:list) {amount += a;}System.out.println("num"+list.size());System.out.println(amount + " "+ total +" "+totalTmp);//生成的红包以队列的形式存入redis,抢红包时性能更好。
这篇关于java生成红包的简单算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!