bentools / picker
帮助你通过权重管理随机选择一个项目。
2.1
2022-10-05 13:44 UTC
Requires
- php: >=7.3
- paragonie/random_compat: ^2.0
Requires (Dev)
- pestphp/pest: ^1.0
- squizlabs/php_codesniffer: @stable
- symfony/var-dumper: ^5.0
This package is auto-updated.
Last update: 2024-09-05 18:18:12 UTC
README
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