add initial go mixture implementation
This commit is contained in:
parent
1f4eb1fec4
commit
6417e0aecc
|
@ -54,7 +54,31 @@ func sample_mixture(fs []func64, weights []float64) float64 {
|
|||
for _, weight := range weights {
|
||||
sum_weights += weight
|
||||
}
|
||||
return sum_weights
|
||||
|
||||
var total float64 = 0
|
||||
for i, weight := range weights {
|
||||
total += weight / sum_weights
|
||||
weights[i] = total
|
||||
}
|
||||
|
||||
var result float64
|
||||
var flag int = 0
|
||||
var p float64 = r.Float64()
|
||||
|
||||
for i, weight := range weights {
|
||||
if p < weight {
|
||||
result = fs[i]()
|
||||
flag = 1
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if flag == 0 {
|
||||
result = fs[len(fs)-1]()
|
||||
}
|
||||
return result
|
||||
// return weights[0]
|
||||
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
|
Loading…
Reference in New Issue
Block a user