public class LeftMoneyPackage {
/**
* 次数
*/
int peoples=5;
/**
* 金额
*/
double leftMoney=10;
}
public static double getRandomMoney(LeftMoneyPackage _leftMoneyPackage) {
//判断红包个数是否为1个
if (_leftMoneyPackage.peoples == 1) {
_leftMoneyPackage.peoples--;
return (double) Math.round(_leftMoneyPackage.leftMoney * 100) / 100;
}
//获取随机数
Random r = new Random();
//设置最小金额
double min = 0.01;
//设置最大金额
double max = _leftMoneyPackage.leftMoney / _leftMoneyPackage.peoples * 2;
//计算金额,金额=随机数*最大金额
double money = r.nextDouble() * max;
//判断金额是否符合要求
money = money < min ? min : money;
//格式化金额
money = (double) Math.floor(money * 100) / 100;
//减少次数
_leftMoneyPackage.peoples--;
//减少金额
_leftMoneyPackage.leftMoney -= money;
//返回金额
return money;
}
public static void main(String[] args) {
LeftMoneyPackage leftMoneyPackage=new LeftMoneyPackage();
int i=0;
while(i<10) {
double money=getRandomMoney(leftMoneyPackage);
if(money==Double.POSITIVE_INFINITY) {
System.out.println("红包已领完");
}else {
System.out.println(money);
}
i++;
}
}
红包算法
猜你喜欢
转载自my.oschina.net/u/1032870/blog/1635714
今日推荐
周排行