重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
大致思路
保靖网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设等网站项目制作,到程序开发,运营维护。成都创新互联于2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联。
1)取份数的平均值
2)根据允许的各份数间最大差值,动态调整随机数范围,形成各份的数量
3)最后一份的数量由前面已经分出的决定,以保证各份的总和为指定值
代码如下:
?php
$total = 100; //待划分的数字
$div = 5; //分成的份数
$area = 10; //各份数间允许的最大差值
$average = round($total / $div);
$sum = 0;
$result = array_fill( 1, $div, 0 );
for( $i = 1; $i $div; $i++ ){
//根据已产生的随机数情况,调整新随机数范围,以保证各份间差值在指定范围内
if( $sum 0 ){
$max = 0;
$min = 0 - round( $area / 2 );
}elseif( $sum 0 ){
$min = 0;
$max = round( $area / 2 );
}else{
$max = round( $area / 2 );
$min = 0 - round( $area / 2 );
}
//产生各份的份额
$random = rand( $min, $max );
$sum += $random;
$result[$i] = $average + $random;
}
//最后一份的份额由前面的结果决定,以保证各份的总和为指定值
$result[$div] = $average - $sum;
//结果呈现
echo '划分情况:br';
foreach( $result as $temp ){
echo $temp, 'br';
}
echo '总和:', array_sum( $result );
exit;
?
1.系统函数:
array_chunk() 把一个数组分割为新的数组块
array_slice() 返回数组中被选定的部分等,更多的参考w3school
,程序员要学会用手册
2.自定义函数:
当系统函数不能满足实际需求时,根据实际的需求,自己重新定义函数
function(){}
3、 计算参数的数组:
参数1是传入数组,参数2是每个分数组元素数量//调用方法返回的是二维数组,可以用数组下标取出你需要的一维数组。
function arr_oper ( $arr, $num ) {
$count = count ( $arr );
for ( $i = 0; $i $count / $num; $i ++ ) {$return_arr[$i] = array_slice ( $arr, $num * $i, $num }
4、利用:$sliceArr = arr_oper( $arr, 1000 );的公式:
$sliceArr[0],$sliceArr[1]......
这个根据你的要求弄就行,因为方法只能返回一个数组,所以我把拆分之后的几个子数组合成了一个数组一起return了。
这个方法会比较灵活,比如我把3000个元素的数组,500个一个拆分,就会返回一个有6个子数组的数组。
php数组分组可以使用函数array_chunk,按照给定的规则进行遍历,如果数组的num值大于8,就整除8,获取整除的数据,然后按照整除数进行分组分块即可。