为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
红颜莎娜 2021-11-22 15:22:08
我正在学习Go编程并尝试测试以下average功能:func average(xs []float64) float64 {    total := 0.0    for _, v := range xs {        total += v    }    return total / float64(len(xs))}我试图通过以下方式生成一段随机浮点数:var xs []float64for n := 0; n < 10; n++ {    xs[n] = rand.Float64()}然而,我得到了panic: runtime error: index out of range题:如何在 Golang 中生成一段随机数?表达式或函数调用是否xs := []float64 { for ... }允许在切片文字中使用?
查看完整描述

2 回答

?
达令说

TA贡献1821条经验 获得超6个赞

您生成随机数的方法很好,但是xs是空的,并且 Go 不会自动扩展切片。您可以使用append,但是由于您事先知道大小,因此替换是最有效的

var xs []float64

xs := make([]float64, 10)

这将给它最初的正确大小。


查看完整回答
反对 回复 2021-11-22
?
繁星coding

TA贡献1797条经验 获得超4个赞

您的解决方案仍然会在每次运行时为您提供相同的数组,因为您没有传递随机种子。我会做这样的事情:


package main 


import (

    "fmt"

    "math/rand"

    "time"

)


func main() {

    s := rand.NewSource(time.Now().UnixNano())

    r := rand.New(s)


    xn := make([]float64, 10)


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

        xn[n] = r.Float64()

    }


    fmt.Println(xn)

}


查看完整回答
反对 回复 2021-11-22
  • 2 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信