这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
1 生成随机数
rand.Intn()
package main
import (
"fmt"
"math/rand"
}
func main(){
num := 100
secNum := rand.Intn(num) //生成100以内的随机数
fmt.Println("The secret number is ",secNum)
}
因为此时没有生成随机数种子,返回的将是同一个数
2 生成随机数种子
rand.Seed(time.Now().UnixNano())
package main
import (
"fmt"
"math/rand"
"time"
}
func main(){
num := 100
rand.Seed(time.Now().UnixNano()) //UnixNano将t表示为Unix时间,即从时间点January 1, 1970 UTC到时间点t所经过的时间(单位纳秒)
secNum := rand.Intn(num)
fmt.Println("The secret number is ",secNum)
}
3 游戏实现
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
maxNum := 100
rand.Seed(time.Now().UnixNano())
secretNumber := rand.Intn(maxNum)
fmt.Println("Please input your guess")
for {
var guess int
_, err := fmt.Scanf("%d", &guess)
if err != nil {
fmt.Println("Invalid input. Please enter an integer value")
continue
}
fmt.Println("You guess is", guess)
if guess > secretNumber {
fmt.Println("Your guess is bigger than the secret number. Please try again")
} else if guess < secretNumber {
fmt.Println("Your guess is smaller than the secret number. Please try again")
} else {
fmt.Println("Correct, you Legend!")
break
}
}
}
运行结果
想要最快的猜出结果可以用二分法