平均分配桶中的"项目"(尽力而为)

use*_*840 4 java algorithm math distribution

假设我想将y项目x均匀分配到存储桶.如果xy这个分布的倍数将是偶数,如果不是,我可以最终得到0每个桶中的项目.例如:

例如:我有3水桶,我想分配2每个项目.由于进行分割(2/3)将导致0每桶物品.如何能够做到,分布1,1,0

Ebb*_*sen 7

第一个y mod x桶将有(y div x) + 1物品,其余的将有y div x物品


Dri*_*r64 7

这种思维应该有效:

package sandbox;

public class Sandbox
{

    public static void main(String[] args)
    {
        int numBuckets = 12;
        int numItems = 34;

        int itemsPerBucket = (numItems / numBuckets);
        int remainingItems = (numItems % numBuckets);

        for (int i = 1; i <= numBuckets; i++)
        {
            int extra = (i <= remainingItems) ? 1:0;
            System.out.println("bucket " + i + " contains " + (itemsPerBucket + extra) + " items.");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这个输出:

bucket 1 contains 3 items.
bucket 2 contains 3 items.
bucket 3 contains 3 items.
bucket 4 contains 3 items.
bucket 5 contains 3 items.
bucket 6 contains 3 items.
bucket 7 contains 3 items.
bucket 8 contains 3 items.
bucket 9 contains 3 items.
bucket 10 contains 3 items.
bucket 11 contains 2 items.
bucket 12 contains 2 items.
Run Code Online (Sandbox Code Playgroud)

请注意,您所做的唯一循环是谈论每个桶.您可以轻松地询问一个桶号,看看有多少物品没有循环!


Dav*_*ave 5

每个桶得到 y/x(整数除法)项,y % x 桶得到 1 个额外的项。