math/rand
rand.Int() int              // [0, MaxInt]
rand.Int31() int32          // [0, MaxInt32]
rand.Int31n(n int32) int32  // [0, n)
rand.Int63() int64          // [0, MaxInt64]
rand.Int63n(n int64) int64  // [0, n)
rand.Intn(n int) int        // [0, n)

示例 main.go

rand.Seed(time.Now().UnixNano())
max := 20
min := 10
fmt.Println(rand.Intn(max-min) + min)

执行

D:\Go\test>go run main.go
14

D:\Go\test>go run main.go
12

D:\Go\test>go run main.go
19
math/rand

我自己的需求这样写已足够

func randInt(max int) int {
    rand.Seed(time.Now().UnixNano())
    return rand.Intn(max) // [0, max)
}