JAVA
public class SplitRedPacket { public static void main(String[] args) { LeftMoneyPackage leftMoneyPackage = new LeftMoneyPackage(); leftMoneyPackage.remainMoney = 10; leftMoneyPackage.remainSize = 8; int i = 1; while (leftMoneyPackage.remainSize > 0) { double money = getRandomMoney(leftMoneyPackage); System.out.println(i + " : " + money); i++; } } public static double getRandomMoney(LeftMoneyPackage _leftMoneyPackage) { // remainSize 剩余的红包数量 // remainMoney 剩余的钱 if (_leftMoneyPackage.remainSize == 1) { _leftMoneyPackage.remainSize--; return (double) Math.round(_leftMoneyPackage.remainMoney * 100) / 100; } Random r = new Random(); double min = 0.01; //最小金额 double max = _leftMoneyPackage.remainMoney / _leftMoneyPackage.remainSize * 2; double money = r.nextDouble() * max; money = money <= min ? min : money; money = Math.floor(money * 100) / 100; _leftMoneyPackage.remainSize--; _leftMoneyPackage.remainMoney -= money; return money; } } class LeftMoneyPackage { public int remainSize; public double remainMoney; public static class BuildLeftMoneyPackage { } }
PHP
$total=10;//红包总额 $num=8;// 分成8个红包,支持8人随机领取 $min=0.01;//每个人最少能收到0.01元 for ($i=1;$i<$num;$i++) { $safe_total=($total-($num-$i)*$min)/($num-$i);//随机安全上限 $money=mt_rand($min*100,$safe_total*100)/100; $total=$total-$money; echo '第'.$i.'个红包:'.$money.' 元,余额:'.$total.' 元 '; } echo '第'.$num.'个红包:'.$total.' 元,余额:0 元';