今天分享一个算法,由于项目需求,要把一个具体的正数随机分配到24小时内,每个小时分到的数都是随机的,不够用0补充,下面是实现过程。
/*
* 随机拆分
* @param $total_num int 总数
* @param $total_copies int 总份数
* @return string/array
* */
function random_split($total_num,$total_copies){
$result = []; //结果
for($i=$total_copies;$i>0;$i--){
$ls_num=0;
$num = 0;
if($total_num > 0){
if($i==1){
$num += $total_num;
}else{
$max_num = floor($total_num/$i);
$ls_num = mt_rand(0,$max_num);
$num += $ls_num;
}
}
$result[] = $num;
$total_num -= $ls_num;
}
shuffle($result); //打乱数组
//return implode(',',$result); //返回字符串
//return $result; //返回数组
}
如果能帮助您解决问题,顺手点个赞呀