$b || $k < $a) { throw new \OutOfBoundsException('Out of bounds'); } return (\floor($k) - $a + 1) / ($b - $a + 1); } /** * Get moment generating function. * * @param int $t Value t * @param float $a Value a * @param float $b Value b * * @return float * * @since 1.0.0 */ public static function getMgf(int $t, float $a, float $b) : float { return (\exp($a * $t) - \exp(($b + 1) * $t)) / (($b - $a + 1) * (1 - \exp($t))); } /** * Get skewness. * * @return float * * @since 1.0.0 */ public static function getSkewness() : float { return 0.0; } /** * Get Ex. kurtosis. * * @param float $a Value a * @param float $b Value b * * @return float * * @since 1.0.0 */ public static function getExKurtosis(float $a, float $b) : float { $n = ($b - $a + 1); return -6 / 5 * ($n ** 2 + 1) / ($n ** 2 - 1); } /** * Get median. * * @param float $a Value a * @param float $b Value b * * @return float * * @since 1.0.0 */ public static function getMedian(float $a, float $b) : float { return ($a + $b) / 2; } /** * Get expected value. * * @param float $a Value a * @param float $b Value b * * @return float * * @since 1.0.0 */ public static function getMean(float $a, float $b) : float { return ($a + $b) / 2; } /** * Get variance. * * @param float $a Value a * @param float $b Value b * * @return float * * @since 1.0.0 */ public static function getVariance(float $a, float $b) : float { return (($b - $a + 1) ** 2 - 1) / 12; } /** * Get standard deviation. * * @param float $a Value a * @param float $b Value b * * @return float * * @since 1.0.0 */ public static function getStandardDeviation(float $a, float $b) : float { return \sqrt(self::getVariance($a, $b)); } }