11 public const SQRT2PI = 2.5066282746310005024157652848110452530069867406099;
27 public static function distribution($value, $mean, $stdDev, $cumulative)
39 return $e->getMessage();
50 return (1 / (self::SQRT2PI * $stdDev)) * exp(0 - (($value - $mean) ** 2 / (2 * ($stdDev * $stdDev))));
64 public static function inverse($probability, $mean, $stdDev)
75 return $e->getMessage();
82 return (self::inverseNcdf($probability) * $stdDev) + $mean;
109 1 => -3.969683028665376e+01,
110 2 => 2.209460984245205e+02,
111 3 => -2.759285104469687e+02,
112 4 => 1.383577518672690e+02,
113 5 => -3.066479806614716e+01,
114 6 => 2.506628277459239e+00,
118 1 => -5.447609879822406e+01,
119 2 => 1.615858368580409e+02,
120 3 => -1.556989798598866e+02,
121 4 => 6.680131188771972e+01,
122 5 => -1.328068155288572e+01,
126 1 => -7.784894002430293e-03,
127 2 => -3.223964580411365e-01,
128 3 => -2.400758277161838e+00,
129 4 => -2.549732539343734e+00,
130 5 => 4.374664141464968e+00,
131 6 => 2.938163982698783e+00,
135 1 => 7.784695709041462e-03,
136 2 => 3.224671290700398e-01,
137 3 => 2.445134137142996e+00,
138 4 => 3.754408661907416e+00,
143 $p_high = 1 - $p_low;
145 if (0 < $p && $p < $p_low) {
147 $q = sqrt(-2 * log($p));
149 return (((((
$c[1] * $q +
$c[2]) * $q +
$c[3]) * $q +
$c[4]) * $q +
$c[5]) * $q +
$c[6]) /
150 ((((
$d[1] * $q +
$d[2]) * $q +
$d[3]) * $q +
$d[4]) * $q + 1);
151 } elseif ($p_high < $p && $p < 1) {
153 $q = sqrt(-2 * log(1 - $p));
155 return -(((((
$c[1] * $q +
$c[2]) * $q +
$c[3]) * $q +
$c[4]) * $q +
$c[5]) * $q +
$c[6]) /
156 ((((
$d[1] * $q +
$d[2]) * $q +
$d[3]) * $q +
$d[4]) * $q + 1);
163 return ((((($a[1] *
$r + $a[2]) *
$r + $a[3]) *
$r + $a[4]) *
$r + $a[5]) *
$r + $a[6]) * $q /
164 ((((($b[1] *
$r + $b[2]) *
$r + $b[3]) *
$r + $b[4]) *
$r + $b[5]) *
$r + 1);
static inverse($probability, $mean, $stdDev)
NORMINV.
static validateFloat($value)
static distribution($value, $mean, $stdDev, $cumulative)
NORMDIST.
static validateProbability($probability)
static flattenSingleValue($value='')
Convert an array to a single scalar value by extracting the first element.
static validateBool($value)
for($i=6; $i< 13; $i++) for($i=1; $i< 13; $i++) $d