public static function percentile(array $values, float $p) : float
    {
        if (empty($values)) {
            throw new InvalidArgumentException('Percentile is not defined for'
                . ' an empty set.');
        }

        if ($p < 0. or $p > 100.) {
            throw new InvalidArgumentException('P must be between 0 and 1,'
                . " $p given.");
        }

        $n = count($values);

        sort($values);

        $x = ($p / 100) * ($n - 1) + 1;

        $xHat = (int) $x;

        $remainder = $x - $xHat;

        $a = $values[$xHat - 1];
        $b = $values[$xHat];

        return $a + $remainder * ($b - $a);
    }
public static function percentile(array $values, float $p) : float
    {
        if (empty($values)) {
            throw new InvalidArgumentException('Percentile is not defined for'
                . ' an empty set.');
        }

        if ($p < 0. or $p > 100.) {
            throw new InvalidArgumentException('P must be between 0 and 1,'
                . " $p given.");
        }

        $n = count($values);

        sort($values);

        $x = ($p / 100) * ($n - 1) + 1;

        $xHat = (int) $x;

        $remainder = $x - $xHat;

        $a = $values[$xHat - 1];
        $b = $values[$xHat];

        return $a + $remainder * ($b - $a);
    }
public static function percentile ( array $ values , float $ p ) : float { if ( empty ( $ values ) ) { throw new InvalidArgumentException ( 'Percentile is not defined for' . ' an empty set.' ) ; } if ( $ p < 0. or $ p > 100. ) { throw new InvalidArgumentException ( 'P must be between 0 and 1,' . " $p given." ) ; } $ n = count ( $ values ) ; sort ( $ values ) ; $ x = ( $ p / 100 ) * ( $ n - 1 ) + 1 ; $ xHat = ( int ) $ x ; $ remainder = $ x - $ xHat ; $ a = $ values [ $ xHat - 1 ] ; $ b = $ values [ $ xHat ] ; return $ a + $ remainder * ( $ b - $ a ) ; }
Calculate the pth percentile of a given set of values.

@param array $values
@param float $p
@throws \InvalidArgumentException
@return float
Calculate the pth percentile of a given set of values .