MathPHP\Probability\Combinatorics::subfactorial PHP Метод

subfactorial() публичный статический Метод

n (-1)ⁱ !n = n! ∑ ----- ᵢ₌₀ i! https://en.wikipedia.org/wiki/Derangement http://mathworld.wolfram.com/Subfactorial.html
public static subfactorial ( integer $n ) : integer
$n integer
Результат integer number of permutations of n
    public static function subfactorial(int $n)
    {
        if ($n < 0) {
            throw new Exception\OutOfBoundsException('Cannot compute subfactorial of a negative number.');
        }
        $n! = self::factorial($n);
        $∑ = 0;
        for ($i = 0; $i <= $n; $i++) {
            $i! = self::factorial($i);
            $∑ += (-1) ** $i / $i!;
        }
        return $n! * $∑;
    }