[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Number](https://evolu.dev/docs/api-reference/common/Number) › computeBalancedBuckets

```ts
function computeBalancedBuckets(
  numberOfItems: number & Brand<"Int"> & Brand<"NonNegative">,
  numberOfBuckets?: number &
    Brand<"Int"> &
    Brand<"NonNegative"> &
    Brand<"Positive">,
  minNumberOfItemsPerBucket?: number &
    Brand<"Int"> &
    Brand<"NonNegative"> &
    Brand<"Positive">,
): Result<
  readonly [
    number & Brand<"Int"> & Brand<"NonNegative"> & Brand<"Positive">,
    number & Brand<"Int"> & Brand<"NonNegative"> & Brand<"Positive">,
  ],
  number & Brand<"Int"> & Brand<"NonNegative"> & Brand<"Positive">
>;
```

Defined in: [packages/common/src/Number.ts:71](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Number.ts#L71)

Divides items into buckets as evenly as possible, ensuring each bucket has at
least the minimum number of items. Returns a success result if the minimum is
met, or an error result with the required number of items if not.

### Example

```ts
computeBalancedBuckets(10, 3, 2); // Returns ok([4, 7, 10])
computeBalancedBuckets(5, 3, 2); // Returns err(6)
```