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

Go 随机数总是返回 168

Go 随机数总是返回 168

Go
萧十郎 2021-10-04 18:07:45
关于 Go,我是一个完全的菜鸟。我正在尝试创建一个任意函数,该函数返回两个相加的随机数。我在下面粘贴了我的代码,但无法弄清楚为什么它总是返回 168!package mainimport(    "fmt"    "math/rand")func add(x int, y int) int{    return x + y}var a int = rand.Intn(100)var b int = rand.Intn(100)func main() {    fmt.Println(add(a, b))}
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

您必须指定种子才能获得不同的数字。它在文档中概述:

诸如 Float64 和 Int 之类的顶级函数使用默认的共享源,该源在每次程序运行时生成确定性的值序列。如果每次运行需要不同的行为,请使用 Seed 函数来初始化默认 Source。

和一些关于种子的参考

Seed 使用提供的种子值将默认 Source 初始化为确定性状态。如果未调用 Seed,则生成器的行为就像由 Seed(1) 播种一样。

你可以在 go食谱中看到一个例子:

rand.Seed(time.Now().Unix())

所以总结一下,你会得到这样的东西:

package main


import(

    "fmt"

    "math/rand"

    "time"

)


func add(x int, y int) int{

    return x + y

}



func main() {

    rand.Seed(time.Now().Unix())

    var a int = rand.Intn(100)

    var b int = rand.Intn(100)

    fmt.Println(add(a, b))

}


查看完整回答
反对 回复 2021-10-04
  • 1 回答
  • 0 关注
  • 196 浏览
慕课专栏
更多

添加回答

举报

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