java基础简单红包编程_【Java 基础领域】手气红包实现思路、代码

package com.hblg.day09.redbag;

import java.util.ArrayList;

import java.util.List;

import java.util.Random;

/**

* @author i

* @create 2019/9/8 17:24

* @Description 手气红包

* 我们来假设一种极端情况 某群主发了100元红包 5个包 如果第一个人抢到的钱数是97元 那么后边四人就有一个人抢不到红包

* 但是,如果第一个人抢红包没有抢到 0元 但是这是不允许出现的情况。

* 因此 我们必须规定一种限制,那就是 抢红包最小值到最大值(最大值为当前平均数的2倍)

* 100元 5个包

* 人数 当前平均数 红包范围 建设所抢到的红包

* 第一个人 100/5=20 0.01-40 20

* 第二个人 80/4=20 0.01-40 35

* 第三个人 45/3=15 0.01-30 15

* 第四个人 30/2=15 0.01-30 28

* 第五个人 2

*/

public class LuckyMode implements OpenMode {

@Override

public ArrayList divide(int totalMoney, int totalCount) {

//创建一个当前红包集合

ArrayList redList = new ArrayList<>();

Integer avgBag = null;

Integer redBagMoney = null;

Random random = new Random();

Integer totalNum = totalCount-1;

Integer result = null;

//遍历

for (int i = 0; i

avgBag = totalMoney/totalNum;//当前平均数 但是会出现不能整除的情况

result = totalMoney%totalNum;//当前可以整除

redBagMoney = random.nextInt(avgBag*2);

//如果不小心被随机到了0 就给他最小的红包

if(redBagMoney==0){

redBagMoney = 1;

}

totalNum--;

totalMoney-=redBagMoney;

System.out.println("被分到的钱数:"+redBagMoney);

redList.add(redBagMoney);

}

redList.add(totalMoney);//最后剩余的钱数给最后一个人

return redList;

}

public static void main(String[] args) {

LuckyMode luckyMode = new LuckyMode();

List redBag = luckyMode.divide(500,3);

System.out.println("redBag:"+redBag);

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值