PHP code example of frank-houweling / weighted-random
1. Go to this page and download the library: Download frank-houweling/weighted-random library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
frank-houweling / weighted-random example snippets
use FrankHouweling\WeightedRandom\WeightedRandomGenerator;
// Initiate the generator
$generator = new WeightedRandomGenerator();
// Register some value
$generator->registerValue('foobar', 5);
// And get a random value
echo $generator->generate() . PHP_EOL;
use FrankHouweling\WeightedRandom\WeightedRandomGenerator;
// Initiate the generator
$generator = new WeightedRandomGenerator();
// Register a new value
$generator->registerValue('foobar', 5);
// Override the added value with a weight of 1
$generator->registerValue('foobar', 1);
// The weight should be above 0, this call will result in an \InvalidArgumentException
$generator->registerValue('foobar', 0);
use FrankHouweling\WeightedRandom\WeightedRandomGenerator;
$generator = new WeightedRandomGenerator();
// Register multiple values
$generator->registerValues([
'foo' => 1,
'bar' => 2,
]);
// Override the bar, foo will stay the same.
$generator->registerValues([
'bar' => 1,
]);
// This will result in an InvalidArgumentException, 0 is not a correct weight.
$generator->registerValues([
'bar' => 0,
]);
use FrankHouweling\WeightedRandom\WeightedRandomGenerator;
$generator = new WeightedRandomGenerator();
$generator->registerValue('foobar', 2);
$generator->removeValue('foobar');
use FrankHouweling\WeightedRandom\WeightedRandomGenerator;
use FrankHouweling\WeightedRandom\WeightedValue;
$generator = new WeightedRandomGenerator();
$weightedValue = new WeightedValue('foobar', 2);
$generator->registerWeightedValue($weightedValue);
$generator->removeWeightedValue($weightedValue);
use FrankHouweling\WeightedRandom\WeightedRandomGenerator;
$generator = new WeightedRandomGenerator();
$generator->registerValues([
'foo' => 2,
'bar' => 3,
]);
// Retrieve all registered values
foreach ($generator->getWeightedValues() as $weightedValue) {
echo sprintf(
'%s => %s',
$weightedValue->getValue(),
$weightedValue->getWeight()
) . PHP_EOL;
}
// Or only one, by the given value.
$weightedValue = $generator->getWeightedValue('foo');
echo $weightedValue->getWeight() . PHP_EOL;
use FrankHouweling\WeightedRandom\WeightedRandomGenerator;
$generator = new WeightedRandomGenerator();
$generator->registerValue('foo', 2);
// Because we only registered one value, this now always returns `foobar`
echo $generator->generate() . PHP_EOL;
$generator->registerValue('bar', 2);
// Because we have registered two values, both with a weight of 2, the chance of foo and bar is both 50%.
echo $generator->generate() . PHP_EOL;
use FrankHouweling\WeightedRandom\WeightedRandomGenerator;
$generator = new WeightedRandomGenerator();
$generator->registerValues([
'foo' => 2,
'bar' => 2,
]);
// Can return foo + bar, bar + foo, foo + foo or bar + bar.
foreach ($generator->generateMultiple(2) as $value) {
echo $value . PHP_EOL;
}
// Can return foo + bar or bar + foo
foreach ($generator->generateMultipleWithoutDuplicates(2) as $value) {
echo $value . PHP_EOL;
}
// This will return three values, of which 2 or 3 are duplicate.
$generator->generateMultiple(3);
// This will throw an \InvalidArgumentException, because it is not possible to generate three unique values.
$generator->generateMultipleWithoutDuplicates(3);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.