如何在 Go 中分配一片浮点数?

我正在学习Go编程并尝试测试以下average功能:


func average(xs []float64) float64 {

    total := 0.0

    for _, v := range xs {

        total += v

    }

    return total / float64(len(xs))

}

我试图通过以下方式生成一段随机浮点数:


var xs []float64

for n := 0; n < 10; n++ {

    xs[n] = rand.Float64()

}

然而,我得到了


panic: runtime error: index out of range

题:


如何在 Golang 中生成一段随机数?

表达式或函数调用是否xs := []float64 { for ... }允许在切片文字中使用?


红颜莎娜
浏览 148回答 2
2回答

达令说

您生成随机数的方法很好,但是xs是空的,并且 Go 不会自动扩展切片。您可以使用append,但是由于您事先知道大小,因此替换是最有效的var&nbsp;xs&nbsp;[]float64和xs&nbsp;:=&nbsp;make([]float64,&nbsp;10)这将给它最初的正确大小。

繁星coding

您的解决方案仍然会在每次运行时为您提供相同的数组,因为您没有传递随机种子。我会做这样的事情:package main&nbsp;import (&nbsp; &nbsp; "fmt"&nbsp; &nbsp; "math/rand"&nbsp; &nbsp; "time")func main() {&nbsp; &nbsp; s := rand.NewSource(time.Now().UnixNano())&nbsp; &nbsp; r := rand.New(s)&nbsp; &nbsp; xn := make([]float64, 10)&nbsp; &nbsp; for n := 0; n < 10; n++ {&nbsp; &nbsp; &nbsp; &nbsp; xn[n] = r.Float64()&nbsp; &nbsp; }&nbsp; &nbsp; fmt.Println(xn)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go