go - golang中的随机数问题

标签 go random

这是我正在使用的代码:

package main
import "fmt"
import "math/rand"

func main() {
    code := rand.Intn(900000)
    fmt.Println(code)
}

它总是返回 698081。我不明白,这是什么问题?

https://play.golang.org/p/XisNbqCZls

编辑:

我试过 rand.Seed

package main

import "fmt"
import "time"
import "math/rand"

func main() {
    rand.Seed(time.Now().UnixNano())
    code := rand.Intn(900000)
    fmt.Println(code)
}

没有变化。现在它总是返回 452000

https://play.golang.org/p/E_Wfm5tOdH

https://play.golang.org/p/aVWIN1Eb84

最佳答案

在 playground 中看到相同结果的几个原因

  1. Golang playground 会缓存结果
  2. playground 中的时间总是同时开始,以使 playground 具有确定性。

最后但同样重要的是,rand 包默认种子是 1,这将使结果具有确定性。如果您放置一个 rand.Seed(time.Now().UnixNano()),您将在每次执行时收到不同的结果。请注意,由于上述第二个原因,这在 Playground 上不起作用。

关于go - golang中的随机数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45394684/

相关文章:

java - 整数到随机数的稳定映射

if-statement - VBScript - 如何生成随机数,然后使用 If 语句使用该数字来选择选项

c# - 为随机和不重复创建数字

go - golang内部是如何映射的?

http - 覆盖 Go 的默认 HTTP 服务器重定向行为

json - json.Unmarshal() 如何工作以及它如何存储在变量中?

c++ - 创建无重复的随机数序列

c# - 为什么这个 Base36 随机字符串不使用 RandomNumberGenerator 随机分布字符

google-app-engine - 在 Gogland 上调用 GAE/Go 本地开发服务器

go - 自定义 Gorm 预加载不获取数据