@thinksdifferent

Как распределить число равномерно?

foreach($wareh_id as $key=>$value){
	$arr[$key] = floor($num/$wareh);
}

$arr[$key] += $num - array_sum($arr);


выдает:
Array
(
    [1] => 1
    [3] => 1
    [0] => 3
)


А мне надо :
Array
(
    [1] => 1
    [3] => 2
    [0] => 2
)
  • Вопрос задан
  • 155 просмотров
Пригласить эксперта
Ответы на вопрос 2
Fragster
@Fragster
помогло? отметь решением!
$amount = 5;
$num = 3;

$rest = $amount;

for($i = 0; $i < $num; $i++) {
	$a = floor($rest / ($num - $i));
	echo("$i: $a\n");
	$rest -= $a;
}
Ответ написан
@Akina
Сетевой и системный админ, SQL-программист.
Обычный подход - тупо:

Количество(Склад Номер Х) = ВсегоТовара * НомерСклада / ВсегоСкладов - Количество(Склады Номер 1 .. Х-1)


Т.е. если, как в вопросе, три склада и 5 товаров:

Склад 1: количество = 5 * 1 / 3 - 0 = 1,666 = 2 штуки
Склад 2: количество = 5 * 2 / 3 - 2 = 1,333 = 1 штука
Склад 3: количество = 5 * 3 / 3 - (2 + 1) = 1,666 = 2 штуки


$amount = 5;
$num = 3;

for($used = 0, $i = 1; $i <= $num; $i++) {
  $used += ($current = round($amount * $i / $num - $used));
  echo("$i: $current\n");
}


https://phpize.online/sql/mysql57/undefined/php/ph...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы