php超级简单,超级快速根据金钱和红包数量随机生成红包数组

    public function randMoney($sum,$count)
    {
        $arr = [];
        $hes = 0;
        $hess =0;
        for ($i=0;$i<$count;$i++){
            $rand =rand(1,1000);
            $arr[]=$rand;
            $hes+=$rand;
        }
        $arr2 =[];
        foreach ($arr as $key=>$value){
            $round = round(($value/$hes)*$sum,2);
            $arr2[] =$round;
            $hess+=$round;
        }
        if($sum !=round($hess,2)){
            $hesss =round($sum-$hess,2);
            $arr2[0]=$arr2[0]+$hesss;
        }
        return $arr2;
    }

用法

用50元生成10个红包:

 $data = $this->randMoney(50,10);
 var_dump($data);

结果

array(10) {
  [0] => float(4.05)
  [1] => float(4.52)
  [2] => float(6.06)
  [3] => float(7.03)
  [4] => float(4.28)
  [5] => float(2.55)
  [6] => float(2.59)
  [7] => float(5.43)
  [8] => float(6.64)
  [9] => float(6.83)
}

局限性

1.生成的金额相对比较平均,调节 rand 的区间可以调节增大平均值得差额。

2.如果要生成一亿级的大数甚用。

猜你喜欢

转载自blog.csdn.net/qq_22823581/article/details/80281083