此代码运行并提供0到999之间的随机数:
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano())
fmt.Println(rand.Intn(999))
}
但是以下代码拒绝运行并发出错误
代码:
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
r := rand.Seed(time.Now().UnixNano())
fmt.Println(r.Intn(999))
}
错误讯息:
rand.Seed(time.Now()。UnixNano())用作值
注意:我是stackOverflow的新手,所以如果问题不是根据规则或标准,请原谅我。
答案 0 :(得分:2)
rand.Seed
不会返回任何值,它是一个无效函数。
答案 1 :(得分:1)
来自godoc
Seed使用提供的种子值将生成器初始化为a 确定性状态。不应该同时调用种子 其他Rand方法。
这意味着,它设置了一些生成随机数的种子并且不返回任何内容,但是您尝试将其用作某个值
答案 2 :(得分:0)
rand.Seed
“设置”rand.Intn
,如果愿意的话。当您致电rand.Seed
时,它会创建一个种子,可以在以后 中使用rand.Intn
。 rand.Intn
返回一个值,所以
rand.Seed(time.Now().UnixNano())
fmt.Println(rand.Intn(999))
的工作原理。但由于rand.Seed
不会返回一个值,因此在其上调用rand.Intn
会返回错误。