今天在工作中写了如下代码,
功能是生成4个不相等的随机数,
**领导非常不满意**,说不要 在循环内 去改变计数器counter,
也就是下面不能在 for里面进行 i--,
请问大家有什么好的方法吗
```
func main() {
rand.Seed(time.Now().Unix())
offset := make([]int32, 4)
for i := 0; i < 4; i++ {
r := rand.Int31n(100)
if i > 0 {
isRepeat := false
for j := 0; j < i; j++ {
if r == offset[j] {
//重新随机
isRepeat = true
break
}
}
if isRepeat {
i--
continue
}
}
offset[i] = r
}
fmt.Println(offset)
}
```
```go
func main() {
rand.Seed(time.Now().Unix())
result := make(map[int32]struct{})
for len(result) != 4 {
r := rand.Int31n(100)
result[r] = struct{}{}
}
fmt.Println(result)
}
```
#2
更多评论
把 - - 改成条件++,不过一个道理
for i := 0; i < 4; {
if !replace {
offset[i] = r
i++
}
}
#1