原文
在此
由于Go沒有為slice提供shuffle函數,所以需要自己想辦法。由于我只需要隨機一次遍歷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()還是產生了一個slice,如果N很大可能是個問題。