1. ホーム
  2. arrays

[解決済み] Goで配列をシャッフルする

2023-02-22 02:39:06

質問

以下のPythonのコードをGoに翻訳してみました。

import random

list = [i for i in range(1, 25)]
random.shuffle(list)
print(list)

は、シャッフル関数がなく、インターフェースの実装や型の変換をしなければならないため、私のGoバージョンは長くて厄介だと思いました。

私のコードの慣用的なGoバージョンはどのようなものでしょうか?

どのように解決するのですか?

リストは 1 から 25 までの整数だけなので パーマ :

list := rand.Perm(25)
for i, _ := range list {
    list[i]++
}

で与えられる並べ換えを使うことに注意してください。 rand.Perm で与えられる並べ換えを使用することは、任意の配列をシャッフルする効果的な方法であることに注意してください。

dest := make([]int, len(src))
perm := rand.Perm(len(src))
for i, v := range perm {
    dest[v] = src[i]
}