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

时间:2009-11-17 12:17:23

标签: php math

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

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

使用的语言是PHP。

3 个答案:

答案 0 :(得分: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));
}

答案 1 :(得分:5)

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

  • 计算天数
  • 计算项目数

  • if items&gt;天

    • 将项目数除以 天数(每天的项目)$ x
    • 取项目模数/天$ m (这是余下的)
    • 循环放置$ x的日子 每天的物品和1件额外物品 在第一个$ m天
  • 如果天数&gt;项目

    • 除以天数 物品数量(每件物品的天数)$ x
    • 循环经过$ x的日子 并在每天放置1件物品(保持 追踪剩下的物品数量)
    • 当你到达最后一天,如果 还剩下任何物品,循环过来 从day0 + 1开始的日子再次开始 踩着$ x

答案 2 :(得分:0)

(第i天的项目)= floor((i + 1)* items / days) - floor(i * items / days),其中i为0。