github.com/Anderson-Lu/gobox@v0.0.0-20191127065433-3e6c4c2da420/number/normsdist.go (about)

     1  package number
     2  
     3  import (
     4  	"math"
     5  )
     6  
     7  //标准正态分布的累积密度函数
     8  func CalcNormsdist(a float64) float64 {
     9  	var p float64 = 0.2316419
    10  	var b1 float64 = 0.31938153
    11  	var b2 float64 = -0.356563782
    12  	var b3 float64 = 1.781477937
    13  	var b4 float64 = -1.821255978
    14  	var b5 float64 = 1.330274429
    15  	var x = math.Abs(a)
    16  
    17  	var t = 1 / (1 + p*x)
    18  	var val = 1 - (1/(math.Sqrt(2*math.Pi))*math.Exp(-1*math.Pow(a, 2)/2))*(b1*t+b2*math.Pow(t, 2)+b3*math.Pow(t, 3)+b4*math.Pow(t, 4)+b5*math.Pow(t, 5))
    19  	if a < 0 {
    20  		val = 1 - val
    21  	}
    22  	return val
    23  }