代码是根据知乎上的解决写出来的,,很简单,基本测试了一下,也很实用,能得到一个相对理想的随机数,,
代码如下:
<?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。