php 数字随机分配

/**
 * 随机分配数量,并返回,连接的字符串
 * @param $num  分配份数
 * @param $total 分配总额
 * @return array
 */
protected function randArray($num, $total)
{
    $array = array();
    $array = array_pad($array, $num, 0);
    for ($i = 0; ; $i++) {
        for ($j = 0; $j < $num; $j++) {
            $rand = rand(0, 1);
            if ((array_sum($array) + $rand) >= $total) {
                $array[$j] += $total - array_sum($array);
                return implode(",", $array);
            } else {
                $array[$j] += $rand;
            }
        }
    }
}

/**
 * 组建24小时任务分配情况
 * @param $total
 * @param $date
 */
protected function get24hours($total, $date)
{
    //今天22点之前下单,并且要求今天完成
    if (date("ymd") == date("ymd", strtotime($date)) && (24 - date('H')) > 2) {
        $return=$this->randArray(23 - date('H'),$total);
        return str_repeat("0,",date('H')+1).$return;
    }
    return $this->randArray(24,$total);
}

0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

猜你喜欢

转载自blog.csdn.net/qq_25861247/article/details/81282894