时间:2021-07-01 10:21:17 帮助过:21人阅读
$r = distribute(100, 31);echo array_sum($r), PHP_EOL;print_r($r);function distribute($total, $num) {  $avg = $total / $num;  $r = array_fill(0, $num, round($avg, 2));   for($i=0; $i<$num; $i+=2) {    $t = rand(1, $avg * 100) / 100;    $r[$i] -= round($t, 2);    if($r[$i] <= 0) $r[$i] = 0.01;    if(isset($r[$i+1])) $r[$i+1] += round($t, 2);  }  $r[$num-1] = $total - array_sum(array_slice($r, 0, -1));  return $r;}  $r = distribute(100, 31);echo array_sum($r), PHP_EOL;print_r($r);function distribute($total, $num) {  $avg = round($total / $num, 2);  $r = array_fill(0, $num, $avg);   for($i=0; $i<$num; $i+=2) {    $t = rand(1, $avg * 100) / 100;    $r[$i] -= $t;    if($r[$i] <= 0) $r[$i] = 0.01;    if(isset($r[$i+1])) $r[$i+1] += $t;  }  $r[$num-1] = $total - array_sum(array_slice($r, 0, -1));  return $r;}  
100Array( [0] => 1.03 [1] => 5.43 [2] => 0.09 [3] => 6.37 [4] => 0.65 [5] => 5.81 [6] => 2.24 [7] => 4.22 [8] => 1.66 [9] => 4.8 [10] => 2.53 [11] => 3.93 [12] => 0.14 [13] => 6.32 [14] => 2.85 [15] => 3.61 [16] => 0.72 [17] => 5.74 [18] => 0.34 [19] => 6.12 [20] => 1.31 [21] => 5.15 [22] => 1.1 [23] => 5.36 [24] => 0.31 [25] => 6.15 [26] => 1.68 [27] => 4.78 [28] => 0.66 [29] => 5.8 [30] => 3.1)
function distribute($total,$num){	return _distribute($total,$num,$total/$num/2,0);}function _ceil($i){	return ((int)($i*100))/100;}function _distribute($total,$num,$pj,$last_c){	if($num==0){		return array();	}	else if($num==1){		return array($total);	}	else {				$cz=_ceil(mt_rand(-$pj*100,$pj*100)/100);		$n=_ceil($pj+$cz+$last_c);		$res[]=$n;		if($num-1>=0)		$res=array_merge($res,_distribute($total-$n,$num-1,$pj,$pj-$cz));		return $res;	}}$ary=distribute(50,12);print_r(array_sum($ary));print_r($ary);    奉上娱乐型红包代码  
  
  
function fn($total, $part, $min = 0.01) {	$res = array_fill(0, $part, $min);	$total -= $part * $min;	for($i=0; $i<$part; $i++) $total -= ($res[$i] += round($i == $part - 1 ? $total : (rand(0, $total * 100)) / 100, 2)) - $min;	return $res;}