PHP模拟微信随机红包算法
  • 分类:经验分享
  • 发表:2016-09-08
  • 围观(3,218)
  • 评论(0)

代码是根据知乎上的解决写出来的,,很简单,基本测试了一下,也很实用,能得到一个相对理想的随机数,,

代码如下:

<?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 . "&nbsp;|&nbsp;<br>";
    //为了检测所有红包数是不是红包总额
    $money_a+= $money_s;
    $money_arrey[] = array("sn" => $j, "money" => $money_s);
    $j++;
}
print_r($money_arrey);
?>

附源码:微信红包源码

记得把文件扩展名改成php。

Top