Go:获取一组唯一的随机数

use*_*985 6 go

如何获得一组在集合中不重复的随机数?

走:

for i := 0; i < 10; i++ {
    v := rand.Intn(100)
    fmt.Println(v)
}
Run Code Online (Sandbox Code Playgroud)

这有时给我两个或三个相同的数字.我希望他们所有人都不同.我该怎么做呢?

pet*_*rSO 13

例如,

package main

import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    rand.Seed(time.Now().UnixNano())
    p := rand.Perm(100)
    for _, r := range p[:10] {
        fmt.Println(r)
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

87
75
89
74
17
32
56
44
36
0
Run Code Online (Sandbox Code Playgroud)

操场:

http://play.golang.org/p/KfdCW3zO5K