在一段时间内均匀分配价值

Mar*_*rco 1 php math

我有一个可变数量的项目,以及我需要分配它们的可变日期范围.假设我有3个项目,我需要在6天内分发它们.我想要的是每隔一天就有一个项目,如果第一天有一个项目也没关系.如果我在6天内有7件物品,其中一天会得到2件物品,那么哪一天也无关紧要.

可悲的是,事实证明我真的很厌倦数学,所以我不知道如何以相对漂亮和漂亮的方式做到这一点,或者甚至可能.我可能会以一种黑客的方式解决这个问题,但我也希望从中学到一些东西:P

使用的语言是PHP.

Oli*_*ver 6

//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));
}
Run Code Online (Sandbox Code Playgroud)


dna*_*irl 5

基本上你正在进行除法,然后按顺序分配剩余部分.所以步骤是这样的:

  • 算上天数
  • 计算物品数量

  • 如果物品>天

    • 将项目数除以天数(每天的项目)$ x
    • 取项目模数/天$ m(这是余数)
    • 循环通过每天放置$ x项目的日子,以及在前$ m天的1个额外项目
  • 如果天>物品

    • 将天数除以项目数(每个项目的天数)$ x
    • 循环每天踩x美元并每天放置1件物品(跟踪剩下的物品数量)
    • 当你到达最后一天后,如果剩下任何物品,从第0天开始再循环几天,然后踩到$ x