需求:10以內隨機生成2個幸運數字
package main
import (
"fmt"
"math/rand"
)
func main() {
fmt.Println("My first lucky number is", rand.Intn(10))
fmt.Println("My senond lucky number is", rand.Intn(10))
}
輸入如圖:
My first lucky number is 1 My senond lucky number is 7
在本環境中,不論編譯運行多少次,都是這個輸出。
為什么沒有產生隨機的效果呢?
此程序的運行環境是固定的,因此 rand.Intn 總是會返回相同的數字。 (要得到不同的數字,需為生成器提供不同的種子數)
添加
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().Unix())
fmt.Println("My first lucky number is", rand.Intn(10))
fmt.Println("My senond lucky number is", rand.Intn(10))
}
效果:(多次編譯運行效果不同)
My first lucky number is 6 My senond lucky number is 8
rand.Seed(time.Now().UnixNano())作用
rand.Intn
獲取隨機數,不加隨機種子,每次遍歷獲取都是重復的一些隨機數據
rand.Seed(time.Now().UnixNano())
設置隨機數種子,加上這行代碼,可以保證每次隨機都是隨機的
