一段有意思代码

<?php
class Red extends CI_Controller{
    public function rand()
    {
        $money = (float)$this->input->get('money');
        $num = (int)$this->input->get('num');
        $ret = [];
        $p_money = 0;
        for ($i = $num; $i > 0; $i--) {
            $p = $this->rand_money($money - $p_money, $i);
            $ret[] = $p;
            $p_money += $p;
        }
        $ret_arr = [];
        for ($i= 0;$i<$num;$i++){
            $p = array_rand($ret);
            $ret_arr[] = $ret[$p];
            unset($ret[$p]);
        }
        $this->success_message(['money'=>$ret_arr]);
    }

    public function rand_money($money, $num)
    {
        if ($money == 0) return 0;
        if ($num == 1) return round($money, 2);
        if ($money <= $num * 0.01) {
            return 0.01;
        }
        $money *= 100;
        return round(rand(1, $money - ($num - 1)) / 100, 2);
    }
}

这是基于ci的代码

结果:

{
  "status": 1,
  "msg": "success",
  "data": {
    "money": [
      0.06,
      0.19,
      0.03,
      0.68,
      0.04
    ]
  }
}

 

转载于:https://my.oschina.net/u/242853/blog/777330

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值