ananiaslitz/item-balancer

该软件包最新版本(v0.0.2)没有可用的许可证信息。

ItemBalancer是一个灵活的库,可以根据指定的比例在预定义的类别间分配项目。通过使用缓存机制,它确保了平衡项目分配的高效实时计算。

v0.0.2 2023-09-05 14:41 UTC

This package is auto-updated.

Last update: 2024-09-05 17:09:34 UTC


README

ItemBalancer是一个灵活的库,它允许根据指定的比例在预定义的类别间分配项目。通过使用缓存机制,它确保了平衡项目分配的高效实时计算。

理由:受一位同事关于概率分布的初始解释的启发,我决定创建这个简化的实现。它的目的是解决在不同概率的类别中分配项目这一挑战,确保分配的公平和比例。

安装

使用Composer包管理器来安装ItemBalancer。

composer require ananiaslitz/item-balancer

使用

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);

在此示例中,我们将ItemX在A和B类别中以70%比30%的比例进行分配。结果将显示ItemX被分配到的类别。

使用Docker进行配置

为了方便开发和测试,我们提供了一个docker-compose.yaml文件,它允许您在Docker容器中运行Redis实例。

前置条件

环境变量

REDIS_HOST=127.0.0.1
REDIS_PORT=6379

说明

  1. 克隆仓库。
  2. 在项目根目录中执行:docker-compose up -d
  3. Redis服务将在端口6379上运行。

当您在项目中使用该库时,请记住,如果您使用Docker,则需要将Redis的主机设置为redis

贡献

贡献是开源社区如此美妙的地方,可以学习、启发和创造。我们非常感谢您做出的任何贡献。感谢您成为我们社区的一员!🥰

关于精度的说明

当使用较小的数量进行分配时,结果可能受到随机因素和概率算法性质的影响。因此,重要的是要记住,在低数量下,可能无法确保反映所设定百分比的分配。

然而,随着项目数量的增加,分配的精度往往会接近指定的百分比。建议使用大量数据进行测试,以获得分布类别的更精确表示。