正确输出代码如下:
package main
import (
"fmt"
"math/rand"
"time"
)
//随机生成10个整数(1-100之间),使用冒泡排序法进行排序,然后使用二分查找法,查找是否有90这个数,并显示下标,如果没有则显示"找不到该数"
func findNum(){
rand.Seed(time.Now().UnixNano())
var arr [10]int
for j := 0;j < 10; j++{
arr[j] = rand.Intn(11)
loop:
for k := 0; k < j; k++{
if arr[k] == arr[j]{
arr[j] = rand.Intn(11)
goto loop
}
}
}
fmt.Println(arr)
}
func main(){
findNum()
}
错误代码如下:
package main
import (
"fmt"
"math/rand"
"time"
)
//随机生成10个整数(1-100之间),使用冒泡排序法进行排序,然后使用二分查找法,查找是否有90这个数,并显示下标,如果没有则显示"找不到该数"
func findNum(){
rand.Seed(time.Now().UnixNano())
var arr [10]int
for j := 0;j < 10; j++{
//将随机数赋值
arr[j] = rand.Intn(11)
//循环j-1次,判断arr[K]是否等于arr[j],如果等于,则重新取随机数给arr[j]
for k := 0; k < j; k++{
//loop位置放在这里是为了方便不用每次值相同还要重新循环判断
loop:
if arr[k] == arr[j]{
arr[j] = rand.Intn(11)
goto loop
}
}
}
fmt.Println(arr)
}
func main(){
findNum()
}
问题:
我想生成10个随机数(1-100),但是发现这个loop放的位置出来的效果和我想象的不一样,错误代码会生成有重复值的数组。