红包算法

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
今日推荐