bentools/picker

帮助你通过权重管理随机选择一个项目。

2.1 2022-10-05 13:44 UTC

This package is auto-updated.

Last update: 2024-09-05 18:18:12 UTC


README

Latest Stable Version License Build Status Coverage Status Total Downloads

Picker

这个简单的库可以帮助你通过一系列项目(字符串、对象、整数等)随机选择一个项目,你可以选择性地为它们分配权重。

用法

use BenTools\Picker\Picker;

require_once __DIR__ . '/vendor/autoload.php';

$collection = [
    [
        'foo',
        80,
    ],
    [
        'bar',
        60,
    ],
    [
        'baz',
        5,
    ],
];

$picker = Picker::create();
foreach ($collection as $key => [$value, $weight]) {
    $picker = $picker->withItem($value, $weight);
}

echo $picker->pick(); // Will be mostly foo or bar

当然,你也可以简单地通过一个无权重的集合随机选择一个值

$picker = Picker::create()->withItems(['foo', 'bar', 'baz']);
echo $picker->pick(); // Will be a truly random value between foo, bar and baz

Shift

选择项目后,picker 可以选择性地将项目移动一次

$picker = Picker::create(shift: true)->withItems(['foo', 'bar']);
$picker->pick(); // let's assume `foo` is picked
$picker->pick(); // only `bar` remains
$picker->pick(); // RuntimeException

安装

这个库需要 PHP 7.3+。

composer require bentools/picker

测试

./vendor/bin/pest

另请参阅

bentools/split-test-analyzer

bentools/cartesian-product

bentools/pager