Равномерно распределить значения за период времени - PullRequest
1 голос
/ 17 ноября 2009

У меня есть переменное количество предметов и диапазон дат, по которому мне нужно их распределить. Допустим, у меня есть 3 предмета, и мне нужно распространять их в течение 6 дней. Я хотел бы, чтобы каждый второй день имел предмет, и не имеет значения, есть ли предмет в первый день или нет. Если бы у меня было 7 предметов в течение 6 дней, один из дней получил бы 2 предмета, не имеет значения, какой это день.

К сожалению, оказывается, что я действительно отстой в математике, поэтому я не имею ни малейшего представления о том, как сделать это относительно красиво и красиво, или если это вообще возможно. Возможно, я мог бы разобраться в этом хакерским способом, но я надеюсь также кое-что узнать из этого: P

Используемый язык - PHP.

Ответы [ 3 ]

6 голосов
/ 17 ноября 2009
//If you get the period between items:
$period = $days / $items;
//Then you can iterate through the items:
for ($i = 0; $i < $items; $i++)
{
    //and have a function that will add an item to the day number given as a parameter.
    add_item_to_day_number(floor($i * $period));
}
5 голосов
/ 17 ноября 2009

По сути, вы делаете разделение, а затем распределяете остаток последовательно. Итак, шаги идут примерно так:

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

  • если предметы> дни

    • разделите количество элементов на количество дней (штук в день) $ x
    • принять модуль предметов / день $ м (это остаток)
    • цикл по дням размещения $ x предметы на каждый день и 1 дополнительный предмет в первые $ m дней
  • если дней> предметы

    • разделите количество дней на количество штук (дней на единицу) $ x
    • цикл по дням с шагом в $ x и размещение 1 предмета на каждый день трек сколько осталось вещей)
    • когда вы прибываете после последнего дня, если остались какие-то предметы, зациклились дни снова начинаются с дня 0 + 1 и шагая на $ x
1 голос
/ 17 ноября 2009

(элементы в день i) = пол ((i + 1) * элементы / дни) - этаж (i * элементы / дни), где i соответствует 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...