From fa0065c96e4f5310987300787b666030e26046b0 Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Fri, 16 Feb 2024 13:43:29 +0100 Subject: [PATCH] wrangle go types --- go/notes.md | 2 +- go/squiggle.go | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/go/notes.md b/go/notes.md index 87348e5a..6da06c45 100644 --- a/go/notes.md +++ b/go/notes.md @@ -4,4 +4,4 @@ - [x] Test with a million samples of a simple lognormal, just to get a sense of speed - [ ] Add mixture distribution - [ ] Look into go routines for filling up an array. -- [ ] Anonymous functions for nested: https://stackoverflow.com/questions/74523441/nested-functions-in-go +- [ ] Anonymous functions for nested: https://stackoverflow.com/questions/74523441/nested-functions-in-o diff --git a/go/squiggle.go b/go/squiggle.go index c932d059..b24f033e 100644 --- a/go/squiggle.go +++ b/go/squiggle.go @@ -49,8 +49,12 @@ func sample_to(low float64, high float64) float64 { type func64 func() float64 -func sample_mixture(fs [](func(float64) float64), ps []float64) float64 { - return 1.0 +func sample_mixture(fs []func64, weights []float64) float64 { + var sum_weights float64 = 0 + for i_, weight := range weights { + sum_weights += weight + } + return sum_weights } func main() { @@ -67,6 +71,12 @@ func main() { return sample_to(1, 10) } - fs := [3](func64){f1, f1, f1} - // x := sample_mixture() + f2 := func() float64 { + return sample_to(100, 1000) + } + + fs := [2](func64){f1, f2} + ws := [2](float64){0.4, 0.1} + x := sample_mixture(fs[0:], ws[0:]) + fmt.Printf("%v\n", x) }