对于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))
}
Run Code Online (Sandbox Code Playgroud)
Sal*_*ali 10
您必须指定种子才能获得不同的数字.它在文档中概述:
顶级函数(如Float64和Int)使用默认的共享源,每次运行程序时都会生成确定的值序列.如果每次运行需要不同的行为,请使用Seed函数初始化默认Source.
关于种子的一些参考
Seed使用提供的种子值将默认Source初始化为确定性状态.如果未调用Seed,则生成器的行为就像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))
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |