一尘不染

Go 中的随机数组

go

我尝试将以下 Python 代码翻译为 Go

import random

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

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

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


阅读 155

收藏
2021-12-09

共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]
}
2021-12-09