代码是根据知乎上的解决写出来的,,很简单,基本测试了一下,也很实用,能得到一个相对理想的随机数,,
代码如下:
<?php
$bonus_sum = 20; //红包个数
$money = 20.5;//红包金额
$money = 20.5 * 100;//*100,以分为单位计算
$money_a = 0;//红包总额计算,可删除
for ($i = 0, $j = 0;$i < $bonus_sum;$i++) {
//检测是否是最后一个,最后一个不进行随机运行
if ($bonus_sum - $i == 1) {
$money_s = $money;
} else {
//公式: 单个金额=随机函数(1分,剩余金额/剩余红包个数*2)
$money_s = mt_rand(1, $money / ($bonus_sum - $i) * 2);
//得到剩余金额
$money = $money - $money_s;
}
//恢复为元为单位
$money_s = $money_s * 0.01;
echo $j . "-" . $money_s . " | <br>";
//为了检测所有红包数是不是红包总额
$money_a+= $money_s;
$money_arrey[] = array("sn" => $j, "money" => $money_s);
$j++;
}
print_r($money_arrey);
?>
附源码:微信红包源码
记得把文件扩展名改成php。
