猿问

如何使用golang检查数组中的重复元素?

我编写了一个代码来生成随机数并删除重复的,如下所示:


package main


import (

    "fmt"

    "math/rand"

    "time"

)


func main() {

    list := [7]int{}

    for i := 0; i < 7; i++ {

    here:

        rand.Seed(time.Now().UnixNano())

        s := rand.Intn(16)

        fmt.Println(s)

        if s != list[0] && s != list[1] && s != list[2] && s != list[3] && s != list[4] && s != list[5] && s != list[6] {

            list[i] = s

        } else {

            goto here

        }


    }

    fmt.Println("list:", list)

}

我注意到有很多重复的代码,例如:


s!=list[0]&&list[1]

但是当我写信给:


s!=list[0:6]

这是错误的,我该如何正确地做到这一点?


蓝山帝景
浏览 762回答 3
3回答

青春有我

将其存储在地图中。像那样rndmap := make(map[int]bool)for len(rndmap) < YOUR_LEN {&nbsp; &nbsp; rndmap[rand.Intn(YOUR_MAX_RAND)] = true}结果映射永远不会存储重复的索引。您可以像这样将其转换为切片rndslice := make([]int,0)for i, _ := range rndmap {&nbsp; &nbsp; rndslice = append(rndslice, i)}

Cats萌萌

您可以使用标准库生成随机元素,而无需首先进行任何重复。package mainimport (&nbsp; &nbsp; "fmt"&nbsp; &nbsp; "math/rand")func main() {&nbsp; &nbsp; fmt.Println(rand.Perm(16)[:7])}
随时随地看视频慕课网APP

相关分类

Go
我要回答