Golang基础 | 猜数游戏 | 青训营笔记

162 阅读1分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第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
      }
   }
}

运行结果

想要最快的猜出结果可以用二分法 image.png