十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
大致思路
创新互联公司专注于闽侯网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供闽侯营销型网站建设,闽侯网站制作、闽侯网页设计、闽侯网站官网定制、成都微信小程序服务,打造闽侯网络公司原创品牌,更为您提供闽侯网站排名全网营销落地服务。
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;
?
php数组分组可以使用函数array_chunk,按照给定的规则进行遍历,如果数组的num值大于8,就整除8,获取整除的数据,然后按照整除数进行分组分块即可。
$arr = array(
array(
"name" = "苹果",
"path" = "食物-水果"
),
array(
"name" = "大白菜",
"path" = "食物-蔬菜"
),
array(
"name" = "大白菜1",
"path" = "食物-蔬菜"
),
array(
"name" = "大白菜2",
"path" = "食物-蔬菜"
),
array(
"name" = "大众牌子xxx",
"path" = "汽车-大众"
),
);
$result = array();
foreach ($arr as $v) {
$path = explode("-", $v['path']);
if (!is_array($result[$path[0]])) {
$result[$path[0]] = array();
}
if (!is_array($result[$path[0]][$path[1]])) {
$result[$path[0]][$path[1]] = array();
}
array_push($result[$path[0]][$path[1]], $v['name']);
}
var_dump($result);