Eris\Generator\FrequencyGenerator::pickFrom PHP Метод

pickFrom() приватный Метод

private pickFrom ( $generators, $rand ) : array
Результат array two elements: index and Generator object
    private function pickFrom($generators, $rand)
    {
        $acc = 0;
        $frequencies = $this->frequenciesFrom($generators);
        $random = $rand(1, array_sum($frequencies));
        foreach ($generators as $index => $generator) {
            $acc += $generator['frequency'];
            if ($random <= $acc) {
                return [$index, $generator['generator']];
            }
        }
        throw new Exception('Unable to pick a generator with frequencies: ' . var_export($frequencies, true));
    }