Skip to content

Instantly share code, notes, and snippets.

@TrizlyBear
Last active August 25, 2021 12:04
Show Gist options
  • Save TrizlyBear/92be6b1bf3e793f09a7712d99eafdff1 to your computer and use it in GitHub Desktop.
Save TrizlyBear/92be6b1bf3e793f09a7712d99eafdff1 to your computer and use it in GitHub Desktop.
numpy.random.rand() in golang
package random
import (
"math/rand"
"reflect"
)
// Generate a multidimensional matrix with random numbers
func Rand(seq ...int) interface{} {
// Declare numbers to fill
nums := seq[0]
for _,el := range seq[1:] {
nums *= el
}
// Generate the sequence of numbers
left := []reflect.Value{}
for i := 0; i < nums; i++ {
left = append(left, reflect.ValueOf(rand.Float64()))
}
// Declare the type template
t := reflect.TypeOf([]float64{})
// Reverse the sequence
for i, j := 0, len(seq)-1; i < j; i, j = i+1, j-1 {
seq[i], seq[j] = seq[j], seq[i]
}
// Loop over the sequence
for _,a := range seq {
n := []reflect.Value{}
for y := 0; y < nums / a; y++ {
holder := reflect.Zero(t)
for i := 0; i < a; i++ {
holder = reflect.Append(holder, left[0])
left = left[1:]
}
n = append(n, holder)
}
nums /= a
left = n
t = reflect.SliceOf(t)
}
return left[0].Interface()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment