回答

收藏

Go 中的随机数组

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

我试着把以下 Python 代码翻译成 Go
  E- p: T  ]( Y- `
    import randomlist = [i for i in range(1,25)]random.shuffle(list)print(list)
    + ^, M& u  J5 L
但是发现了我的 Go 版本冗长而笨拙,因为没有 shuffle 功能,我必须实现接口和转换类型。
* N% x# p/ U% Z; ]1 {常用的代码 Go 版本是什么?2 i9 N: }" T3 o
                                                               
) L9 E( g+ @8 N4 D5 _    解决方案:                                                               
1 B; [& X9 b6 q6 C$ b8 Y                                                                因为你的列表只是 1 到 25 之间的整数,你可以使用它Perm:! |  }/ |  K/ N0 `
    list := rand.Perm(25)for i,_ := range list    list  }
    6 S) C: Z+ L) T8 I  a0 Y, |
请注意,使用 给出的排列rand.Perm是混洗任何数组的有效方法。
7 C( N0 C) d6 U" x. d3 b0 G
    dest := make([]int,len(src))perm := rand.Perm(len(src))for i,v := range perm    dest[v] = src}9 [; T5 F6 @  n* u( y. R
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则