PHP红包算法

总金额1000,10个随机红包。直接上代码:

function rand_packet($num,$money)
{
    $min = 0.01;
    $data = [];
    for($i = 1; $i < $num; $i++)
    {
        $save_money = ($money - $min * ($num - $i)) / ($num - $i) ;
        $rand_money = mt_rand($min * 100,$save_money * 100) / 100;
        $money = $money - $rand_money;
        $data[$i] = $rand_money;
         
    }
    // 此时最后一个永远为最大红包,因此在随机一个数交换$data的值。
    $mark = mt_rand(1, $num);
    $temp = $data[$mark];
    $data[$num] = $temp;
    $data[$mark] = $money;
    return $data;
}
rand_packet(10,1000);
请大家多多指教!

发表评论

电子邮件地址不会被公开。