1 Star 1 Fork 0

zhuyuns/basic

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
gaussian.go 1.23 KB
一键复制 编辑 原始数据 按行查看 历史
wing 提交于 2021-12-18 11:42 . 添加基础包
package gaussian
import "math"
const (
SQRT2PI = float64(2.50662827463100050241576528481)
)
type Dist struct {
Samples []int
Ptr int
N int
Sigma float64
Mean float64
}
func NewDist(num_samples int) *Dist {
dist := &Dist{}
dist.Samples = make([]int, num_samples)
return dist
}
func (dist *Dist) IsSampleOk() bool {
if dist.N >= len(dist.Samples) {
return true
} else {
return false
}
}
func (dist *Dist) Add(x int) {
dist.Samples[dist.Ptr] = x
if dist.Ptr++; dist.Ptr >= len(dist.Samples) {
dist.Ptr = 0
}
if dist.N < len(dist.Samples) {
dist.N++
}
if dist.N == len(dist.Samples) {
// caculate mean
sum := int64(0)
for i := 0; i < dist.N; i++ {
sum += int64(dist.Samples[i])
}
dist.Mean = float64(sum) / float64(dist.N)
// caculate standard deviation
sum2 := float64(0.0)
for i := 0; i < dist.N; i++ {
v := float64(dist.Samples[i]) - dist.Mean
v = v * v
sum2 += v
}
dist.Sigma = math.Sqrt(sum2 / float64(dist.N))
}
}
func (dist *Dist) P(x int) float64 {
X := float64(x)
A := 1.0 / (dist.Sigma * SQRT2PI)
B := math.Exp(-((X - dist.Mean) * (X - dist.Mean)) / (2 * dist.Sigma * dist.Sigma))
return A * B
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/zhuyuns/basic.git
git@gitee.com:zhuyuns/basic.git
zhuyuns
basic
basic
v0.0.63

搜索帮助