smoren/probability-selector

Probability selector

Maintainers

👁 smoren

Package info

github.com/Smoren/probability-selector-php

pkg:composer/smoren/probability-selector

Statistics

Installs: 824

Dependents: 0

Suggesters: 1

Stars: 13

Open Issues: 0

v2.1.0 2023-02-28 07:37 UTC

Requires

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT b1f12b434ce333a8091348cc69a6cb88754e4bfc

  • Smoren <ofigate.woop@gmail.com>

helperprobabilityfrequency

This package is auto-updated.

Last update: 2026-06-28 15:30:48 UTC


README

👁 Packagist PHP Version Support
👁 Scrutinizer Code Quality
👁 Coverage Status
👁 Build and test
👁 License: MIT

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:

License

PHP Probability Selector is licensed under the MIT License.