Go 随机数总是返回 168

关于 Go,我是一个完全的菜鸟。


我正在尝试创建一个任意函数,该函数返回两个相加的随机数。


我在下面粘贴了我的代码,但无法弄清楚为什么它总是返回 168!


package main


import(

    "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))

}


萧十郎
浏览 202回答 1
1回答

料青山看我应如是

您必须指定种子才能获得不同的数字。它在文档中概述:诸如 Float64 和 Int 之类的顶级函数使用默认的共享源,该源在每次程序运行时生成确定性的值序列。如果每次运行需要不同的行为,请使用 Seed 函数来初始化默认 Source。和一些关于种子的参考Seed 使用提供的种子值将默认 Source 初始化为确定性状态。如果未调用 Seed,则生成器的行为就像由 Seed(1) 播种一样。你可以在 go食谱中看到一个例子:rand.Seed(time.Now().Unix())所以总结一下,你会得到这样的东西:package mainimport(    "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))}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go