我编写了一个代码来生成随机数并删除重复的,如下所示:package mainimport ( "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]这是错误的,我该如何正确地做到这一点?
3 回答
青春有我
TA贡献1784条经验 获得超8个赞
将其存储在地图中。
像那样
rndmap := make(map[int]bool)
for len(rndmap) < YOUR_LEN {
rndmap[rand.Intn(YOUR_MAX_RAND)] = true
}
结果映射永远不会存储重复的索引。
您可以像这样将其转换为切片
rndslice := make([]int,0)
for i, _ := range rndmap {
rndslice = append(rndslice, i)
}
Cats萌萌
TA贡献1805条经验 获得超9个赞
您可以使用标准库生成随机元素,而无需首先进行任何重复。
package main
import (
"fmt"
"math/rand"
)
func main() {
fmt.Println(rand.Perm(16)[:7])
}
- 3 回答
- 0 关注
- 760 浏览
添加回答
举报
0/150
提交
取消