Go言語 - データのランダムシャッフル
ライブラリにシャッフルがなさそうだったので作成。Fisher-Yates shuffleというアルゴリズムを使用しました。
package main import "fmt" import "time" import "math/rand" func shuffle(list []int){ for i := len(list); i > 1; i-- { j := rand.Intn(i) // 0〜(i-1) の乱数発生 list[i - 1], list[j] = list[j], list[i - 1] } } func main() { rand.Seed(time.Now().UnixNano()) // データ要素数指定、および初期データ作成 size := 10 list := make([]int, size, size) for i := 0; i < size; i++ { list[i] = i } // シャッフル shuffle(list) for _, d := range list { fmt.Println(d) } }