Деление на 4 и закръгляне на числа

Ticketa

Registered
Привет,
Имам следния казус.
Винаги имам 4 колони , като те ми служат да деля на четири - винаги.

Пример:
колона1, колона2, колона3, колона4

Деление на: 4
Брой: 90
90/4=22.50

Създаваме сбор който е равен на 90 ;
20 + 30 + 20 + 20 = 90

Брой: 20
20/4 = 5
5 + 5 + 5 + 5 = 20

Брой: 26
26/4 = 6,5
6 + 8 + 6 + 6 = 26

Брой: 54
54/4=13,5
13 + 15 + 13 + 13 = 54

Й така нататък. Идеята е числата да се разпределят по равно дори Брой да не се дели на 4 и колона2 да е повече или равна на останалите. Опитвах някакви експерименти като: но не се получи....

<?php
$factor=4;
for($x=0; $x<4; ++$x){
$number=22.5;
echo "Number: $number Becomes: ";
if($remainder=$number%$factor){
$number+=$factor-$remainder;
}
echo "$number\n";
}

Брой - може да бъде 7/4 , можи да бъде й 107/4
1+4+1+1=7

25+32+25+25=107
 
PHP:
<?php
function calculate_columns(int $total, int $size, int $prefer = 1): array {
    $columns = [];
    for ($i = 0; $i < $size; $i++) {
        $columns[$i] = floor($total / $size);
    }
    $columns[$prefer] += $total - $columns[$prefer] * $size;
    return $columns;
}

$columns = calculate_columns(26, 4);
var_dump($columns);

$total - сумата, $size - колони, $prefer - къде да добави остатъка.

Код:
array(4) {
  [0]=>
  float(6)
  [1]=>
  float(8)
  [2]=>
  float(6)
  [3]=>
  float(6)
}
 
Близо бях

<?php
$tot = 20; //брой
$groups = 4; //деление
$numbers = array();
for($i = 1; $i < $groups; $i++) {
$num = rand(1, $tot-($groups-$i));
$tot -= $num;
$numbers[] = $num;
}
$numbers[] = $tot;
print_r($numbers);

Array
(
[0] => 8
[1] => 9
[2] => 2
[3] => 1
)

+1 ти давам
 

Горе