LoginSignup
5
3

More than 5 years have passed since last update.

Goで文字列集合をシャッフルするプログラムを書く

Last updated at Posted at 2017-11-27

TL;DR

shuffle.go
package main
import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    arr := []string{"hyde", "ken", "tetsuya", "yukihiro"}
    shuffle(arr)
    fmt.Println(arr)
}

func shuffle(a []string) {
    rand.Seed(time.Now().UnixNano()) 
    for i := range a {
        j := rand.Intn(i + 1)
        a[i], a[j] = a[j], a[i]
    }
}

何かの順番を決めるときにお使いください。

バージョン

# go version
go version go1.9.2 linux/amd64

使い方

# go run shuffle.go 
[ken yukihiro tetsuya hyde]

slice

Go言語にはsliceがあります。arrayとよく似ています。arrayは要素数が決まっていますが、sliceは要素数を決めずに使うことができます。柔軟に増やしたり減らしたりできますね。

コロン区切りで要素を指定することができます。開始/終端片方だけの指定もできます。

参考:A Tour of Go : Slices

math/rand

mathライブラリの中からrandクラスを使います。Rand.Intnは0からi+1の範囲でランダムな整数を返します。

毎回異なる結果になるように、Seed値にunix時間のnano単位を入れています。

これを要素回数分、ランダムな相手と入れ替えを実施しています。

おしまい。

5
3
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3