关于 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))
}
- 1 回答
- 0 关注
- 196 浏览
添加回答
举报
0/150
提交
取消