小编典典

在Go中随机播放数组

go

我试图将以下Python代码转换为Go

import random

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

但是我发现Go版本冗长而笨拙,因为没有shuffle函数,我不得不实现接口和转换类型。

什么是我的代码的惯用Go版本?


阅读 194

收藏
2020-07-02

共1个答案

小编典典

由于列表只是1到25之间的整数,因此可以使用Perm

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]
}
2020-07-02