我有点困惑。我有一个随机字符串生成器,这是代码:package utilsimport ( "fmt" "math/rand")var chars = []rune("abcdefghijklmnopqrstuvwxyz0123456789")func RandSeq(n int) string { b := make([]rune, n) for i := range b { b[i] = chars[rand.Intn(len(chars))] } fmt.Println(string(b)) return string(b)}每次我运行它时,它都会生成一个新的随机字符串,但如果我重新启动服务器,结果会重复。以下是一些结果:go run main.gofpllngzieyoh43e0133ols6k1hh2gdnyxxvi7hvszwk1b182tvjzjpezi4hx9gvmkir0xcta0opsb5qipjzb3h3x9kcegta5m1zcv5drxckn42gb50anxndsckjdwgfw5japz01zicapy9eqixuc9uehq235v48c51wgg1gypq4s9miwn1dxkjqd614m58f0fyy29g6ujmxbouxshy2plmkmhlnmdbfhf7kq8u26873eql4yyp7fyilbb72nrtlcgo run main.gofpllngzieyoh43e0133ols6k1hh2gdnyxxvi7hvszwk1b182tvjzjpezi4hx9gvmkir0xcta0opsb5qipjzb3h3x9kcegta5m1zcv5drxckn42gb50anxndsckjdwgfw5japz01zicapy9eqixuc9uehq235v48c知道为什么会这样吗?
2 回答
互换的青春
TA贡献1797条经验 获得超6个赞
在生成任何随机数之前,您需要为随机数生成器设置种子。一个很好的使用价值是当前的 unix 时间戳:
import (
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano())
}
请注意,您应该只在启动时(或分叉后)为 RNG 播种一次,而不是在每次生成随机数之前。
- 2 回答
- 0 关注
- 278 浏览
添加回答
举报
0/150
提交
取消