java红包记录_教你用java做个微信红包,自己做运气王!

*/public class RedPacketUtil {

//微信红包的最大值和最小值,和最大红包金额系数

private static final float MINMUM = 0.01f;

private static final float MAXMUM = 200.00f;

private static final float TIMES = 2.1f;

//判断当前金额和数量是否正确

public boolean isRight(float money,int count){

//计算当前平均值

float ave = (float)money / count;

if(ave < MINMUM){

return false;

}else if(ave > MAXMUM){

return false;

}

return true;

}

//生成每个具体红包的金额

public float redPacket(float money, float min, float maxs, int count) {

//判断当前人数

if(count == 1){

//确保红包不小于0.01元

money = money > MINMUM ? money : MINMUM;

return (float)(Math.round(money 100)) / 100;

}

float max = maxs > money ? money : maxs;

//生成单个红包数量,且保证红包的精度

float one = (float) (Math.random()(max - min) + min);

one = (float)(Math.round(one * 100)) / 100;

float moneyRest = (money - one);

//判断当前红包数量是否合理

if(isRight(moneyRest,count - 1)){

return one;

}else{

//重新分配红包

float ave = (float)moneyRest / (count-1);

if(ave < MINMUM){

return redPacket(money,min,one,count);

}else if(ave > MAXMUM){

return redPacket(money,one,max,count);

}

}

return one;

}

//拆分红包,生成具体的红包数

public List splitRedPacket(float money,int count){

//判断当前金额和数量是否正确

if(!isRight(money,count)){

return null;

}

//记录每个红包的数量

List rpList = new ArrayList();

//单个红包的最大金额

float max = (float)(money * TIMES)/ count ;

max = max > MAXMUM ? MAXMUM : max;

float one = 0;

//开始记录每个红包的数量

for(int i = 0;i < count;i++){

one = redPacket(money,MINMUM,max,count-i);

rpList.add(one);

money = money - one;

}

return rpList;

}

public static void main(String[] args) {

RedPacketUtil util = new RedPacketUtil();

List result = util.splitRedPacket(200, 10);

System.out.println(result);

//验证金额总数

float sum = 0;

for(float i : result){

sum = sum + i;

}

System.out.println(sum);

}}

20200106162124701661.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值