回答

收藏

Go 中的随机数组

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

我试着把以下 Python 代码翻译成 Go& W# K( E: J, a, n3 d* q$ C+ u
    import randomlist = [i for i in range(1,25)]random.shuffle(list)print(list)9 {% a2 P  _6 {4 m1 T
但是发现了我的 Go 版本冗长而笨拙,因为没有 shuffle 功能,我必须实现接口和转换类型。
) s* x: U, ~4 u" J常用的代码 Go 版本是什么?
/ k! K* e2 |) P/ p8 _# n" U                                                               
3 N' `4 m3 U* b! |    解决方案:                                                                , i( d/ ~. _- }
                                                                因为你的列表只是 1 到 25 之间的整数,你可以使用它Perm:
) Z0 V! O$ c& Q" y9 }3 {
    list := rand.Perm(25)for i,_ := range list    list  }9 @' K, T( g( O/ C, n
请注意,使用 给出的排列rand.Perm是混洗任何数组的有效方法。
/ w: _( m/ b$ M
    dest := make([]int,len(src))perm := rand.Perm(len(src))for i,v := range perm    dest[v] = src}/ Y4 B+ \8 b1 i* f: \# n
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则