原文
在此
由于Go沒有為slice提供shuffle函數(shù),所以需要自己想辦法。由于我只需要隨機(jī)一次遍歷1 -> N,所以這段code最匹配。
func main() {
vals := []int{10, 12, 14, 16, 18, 20}
r := rand.New(rand.NewSource(time.Now().Unix()))
for _, i := range r.Perm(len(vals)) {
val := vals[i]
fmt.Println(val)
}
}
似乎go不像scala有那種惰性求值的特性,所以這里的r.Perm()還是產(chǎn)生了一個(gè)slice,如果N很大可能是個(gè)問題。