Eris\Generator\SubsetGenerator::__invoke PHP Method

__invoke() public method

public __invoke ( $size, $rand )
    public function __invoke($size, $rand)
    {
        $relativeSize = $size / ForAll::DEFAULT_MAX_SIZE;
        $maximumSubsetIndex = floor(pow(2, count($this->universe)) * $relativeSize);
        $subsetIndex = $rand(0, $maximumSubsetIndex);
        $binaryDescription = str_pad(decbin($subsetIndex), count($this->universe), "0", STR_PAD_LEFT);
        $subset = [];
        for ($i = 0; $i < strlen($binaryDescription); $i++) {
            $elementPresent = $binaryDescription[$i];
            if ($elementPresent == "1") {
                $subset[] = $this->universe[$i];
            }
        }
        return GeneratedValue::fromJustValue($subset, 'subset');
    }