关于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))
}
答案 0 :(得分:10)
您必须指定种子才能获得不同的数字。它在documentation中列出:
顶级函数(如Float64和Int)使用默认共享 每次a产生一个确定的值序列的源 程序运行。使用Seed函数初始化默认Source 如果每次运行都需要不同的行为。
关于Seed
的一些参考Seed使用提供的种子值初始化默认的Source to 一种确定性的状态。如果未调用Seed,则生成器表现为 如果种子播种(1)。
你可以在go cookbook中看到一个例子:
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))
}