PHPackages                             ananiaslitz/item-balancer - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. ananiaslitz/item-balancer

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

ananiaslitz/item-balancer
=========================

ItemBalancer is a flexible library for distributing items across predefined categories based on specified proportions. Using a cache-backed mechanism, it ensures efficient real-time calculations for balanced item assignments.

v0.0.2(2y ago)45PHP

Since Aug 28Pushed 2y ago1 watchersCompare

[ Source](https://github.com/Ananiaslitz/itemBalancer)[ Packagist](https://packagist.org/packages/ananiaslitz/item-balancer)[ RSS](/packages/ananiaslitz-item-balancer/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (1)Versions (3)Used By (0)

ItemBalancer
============

[](#itembalancer)

ItemBalancer é uma biblioteca flexível que permite distribuir itens entre categorias pré-definidas com base em proporções especificadas. Com um mecanismo respaldado por cache, ele garante cálculos em tempo real eficientes para atribuições equilibradas de itens.

**Justificativa**: Movido por uma explicação inicial de um amigo de trabalho sobre distribuição probabilística, resolvi criar esta implementação simplista. Ela tem como objetivo resolver o desafio de distribuir itens em categorias com diferentes probabilidades, garantindo uma distribuição justa e proporcional.

Instalação
----------

[](#instalação)

Use o gerenciador de pacotes [Composer](https://getcomposer.org/) para instalar a ItemBalancer.

```
composer require ananiaslitz/item-balancer
```

Uso
---

[](#uso)

```
require 'vendor/autoload.php';

use Ananiaslitz\ItemBalancer\RedisCache;
use Ananiaslitz\ItemBalancer\Distributor;

$categories = ['A', 'B'];
$percentages = [70, 30];
$cache = new RedisCache();
$distributor = new Distributor($cache, $categories, $percentages);

$result = $distributor->distribute('ItemX');
print_r($result);
```

Neste exemplo, estamos distribuindo o ItemX entre as categorias A e B com uma proporção de 70% para A e 30% para B. O resultado mostrará a categoria para a qual ItemX foi distribuído.

Configuração usando Docker
--------------------------

[](#configuração-usando-docker)

Para facilitar o desenvolvimento e os testes, fornecemos um arquivo `docker-compose.yaml` que permite que você rode uma instância do Redis em um container Docker.

### Pré-requisitos

[](#pré-requisitos)

- [Docker](https://docs.docker.com/get-docker/)
- [Docker Compose](https://docs.docker.com/compose/install/)

### Variáveis de ambiente

[](#variáveis-de-ambiente)

```
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
```

### Instruções

[](#instruções)

1. Clone o repositório.
2. No diretório raiz do projeto, execute: `docker-compose up -d`
3. O serviço Redis estará rodando na porta 6379.

Quando estiver usando a biblioteca em seu projeto, lembre-se de configurar o host do Redis para `redis` se estiver usando Docker.

Contribution
------------

[](#contribution)

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. We greatly appreciate any contributions you make. Thank you for being a part of our community! 🥰

[ ![](https://camo.githubusercontent.com/cb605c793fe592385426215b8357407df99753c8bab619cf4a6655646160b249/68747470733a2f2f636f6e747269622e726f636b732f696d6167653f7265706f3d416e616e6961736c69747a2f6974656d42616c616e636572)](https://github.com/ananiaslitz/itemBalancer/graphs/contributors)Aviso sobre Precisão
--------------------

[](#aviso-sobre-precisão)

Quando se utiliza quantidades menores para a distribuição, a precisão dos resultados pode ser influenciada por fatores estocásticos e pela própria natureza do algoritmo probabilístico. Portanto, é importante ter em mente que, com baixas quantidades, pode não ser possível garantir uma distribuição que reflita exatamente as porcentagens estabelecidas.

No entanto, à medida que a quantidade de itens aumenta, a precisão da distribuição tende a se aproximar das porcentagens especificadas. Recomenda-se realizar testes com volumes significativos de dados para obter uma representação mais precisa das categorias de distribuição.

###  Health Score

19

—

LowBetter than 10% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity34

Early-stage or recently created project

 Bus Factor1

Top contributor holds 60% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~7 days

Total

2

Last Release

980d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/963a9f4c77e080eaafe63352d0ec2e1dc101cb54b734c0a144223893793000b5?d=identicon)[Ananiaslitz](/maintainers/Ananiaslitz)

---

Top Contributors

[![Ananiaslitz](https://avatars.githubusercontent.com/u/96492331?v=4)](https://github.com/Ananiaslitz "Ananiaslitz (6 commits)")[![dhsananias](https://avatars.githubusercontent.com/u/29582813?v=4)](https://github.com/dhsananias "dhsananias (4 commits)")

### Embed Badge

![Health badge](/badges/ananiaslitz-item-balancer/health.svg)

```
[![Health](https://phpackages.com/badges/ananiaslitz-item-balancer/health.svg)](https://phpackages.com/packages/ananiaslitz-item-balancer)
```

###  Alternatives

[grumpydictator/firefly-iii

Firefly III: a personal finances manager.

22.8k69.3k](/packages/grumpydictator-firefly-iii)[blair2004/nexopos

The Free Modern Point Of Sale System build with Laravel, TailwindCSS and Vue.js.

1.2k2.3k](/packages/blair2004-nexopos)[php-junior/laravel-video-chat

Laravel Video Chat using Socket.IO and WebRTC

82018.1k](/packages/php-junior-laravel-video-chat)[vcian/pulse-active-sessions

A Laravel Pulse card to show active user session.

11469.2k](/packages/vcian-pulse-active-sessions)[splitsoftware/split-sdk-php

Split SDK for PHP

161.3M2](/packages/splitsoftware-split-sdk-php)[vwo/vwo-php-sdk

VWO server side sdk

12166.4k](/packages/vwo-vwo-php-sdk)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
