smoren / probability-selector
Probability selector
v2.1.0
2023-02-28 07:37 UTC
Requires
- php: >=7.4
- ext-json: *
- ext-mbstring: *
Requires (Dev)
- codeception/codeception: ^4.2.1
- codeception/module-asserts: ^2.0
- php-coveralls/php-coveralls: ^2.0
- phpstan/phpstan: ^1.8
- squizlabs/php_codesniffer: 3.*
This package is auto-updated.
Last update: 2024-11-28 11:19:15 UTC
README
Selection manager for choosing next elements to use from data source based on uniform distribution of selections.
Infinite iteration
use Smoren\ProbabilitySelector\ProbabilitySelector; $ps = new ProbabilitySelector([ // data // weight // initial usage counter ['first', 1, 0], ['second', 2, 0], ['third', 3, 4], ]); foreach ($ps as $datum) { echo "{$datum}, "; } // second, second, first, second, third, third, second, first, third, second, third, third, second, first, third, ...
Iteration limit and export
use Smoren\ProbabilitySelector\ProbabilitySelector; $ps = new ProbabilitySelector([ // data // weight ['first', 1], ['second', 2], ]); foreach ($ps->getIterator(6) as $datum) { echo "{$datum}, "; } // second, second, first, second, second, first print_r($ps->export()); /* [ ['first', 1, 2], ['second', 2, 4], ] */
Single decision
use Smoren\ProbabilitySelector\ProbabilitySelector; $ps = new ProbabilitySelector([ // data // weight ['first', 1], ['second', 2], ]); $ps->decide(); // second $ps->decide(); // second $ps->decide(); // first
Unit testing
composer install
composer test-init
composer test
Standards
PHP Probability Selector conforms to the following standards:
- PSR-1 — Basic coding standard
- PSR-4 — Autoloader
- PSR-12 — Extended coding style guide
License
PHP Probability Selector is licensed under the MIT License.