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.如果要生成一亿级的大数甚用。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

廖圣平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值