回答

收藏

Go 中的随机数组

技术问答 技术问答 269 人阅读 | 0 人回复 | 2023-09-12

我试着把以下 Python 代码翻译成 Go
6 F" y8 l) f0 b% w4 i, O2 L
    import randomlist = [i for i in range(1,25)]random.shuffle(list)print(list)
    * U& j; f2 o. t, P- [
但是发现了我的 Go 版本冗长而笨拙,因为没有 shuffle 功能,我必须实现接口和转换类型。7 y5 l  x3 B8 t* J+ M( x% P$ N
常用的代码 Go 版本是什么?. O0 C0 ]* _& T  K1 u
                                                               
1 V- w8 j- y& ]    解决方案:                                                                * a% B3 t0 d, K# e8 T, N
                                                                因为你的列表只是 1 到 25 之间的整数,你可以使用它Perm:
5 o) d7 H- S9 M4 {0 j  o
    list := rand.Perm(25)for i,_ := range list    list  }5 y* ?, P% e. F- c* Y
请注意,使用 给出的排列rand.Perm是混洗任何数组的有效方法。  \! V0 J7 m+ w3 v. @
    dest := make([]int,len(src))perm := rand.Perm(len(src))for i,v := range perm    dest[v] = src}" _# ]: k  V! |2 x- i! F
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则